Remove redundant credential tile image
This commit is contained in:
@@ -67,7 +67,12 @@ Every synchronized user also receives `Universidad La Salle` in the AD
|
||||
The generic SGU credential is rendered as a dedicated branded tile instead of
|
||||
being grouped below the anonymous **Other user** tile. Machine policy assigns
|
||||
the SGU CLSID as the default provider while retaining the built-in Microsoft
|
||||
password provider.
|
||||
password provider. It enumerates one `CPFT_TILE_IMAGE` and places the
|
||||
`CPFT_LARGE_TEXT` heading immediately after it with `CPFS_DISPLAY_IN_BOTH`,
|
||||
matching Microsoft's supported field ordering. LogonUI owns field typography:
|
||||
on Windows 10 and 11, the account-name title used by **Other user** is shell UI,
|
||||
not a style that a generic Credential Provider can request. Do not add a second
|
||||
tile image or a synthetic Windows account to imitate that title.
|
||||
|
||||
The managed hierarchy is rooted at `OU=Usuarios-SGU`: `Docentes`, `Alumnos`,
|
||||
and `Administrativos` are direct child OUs beneath it.
|
||||
|
||||
@@ -4,7 +4,6 @@ internal static class ControlKeys
|
||||
{
|
||||
public const string ProviderLabel = "ProviderLabel";
|
||||
public const string ProviderLogo = "ProviderLogo";
|
||||
public const string UserTile = "UserTile";
|
||||
public const string Heading = "Heading";
|
||||
public const string InformationLabel = "InformationLabel";
|
||||
public const string UserName = "UserName";
|
||||
|
||||
@@ -7,7 +7,6 @@ namespace SGU.CredentialProvider;
|
||||
internal static class ProviderTileIcon
|
||||
{
|
||||
public const int Size = 72;
|
||||
public const int UserTileSize = 128;
|
||||
|
||||
public static Bitmap Create()
|
||||
{
|
||||
@@ -31,29 +30,4 @@ internal static class ProviderTileIcon
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public static Bitmap CreateUserTile()
|
||||
{
|
||||
Bitmap bitmap = new(UserTileSize, UserTileSize, PixelFormat.Format32bppArgb);
|
||||
using Graphics graphics = Graphics.FromImage(bitmap);
|
||||
graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
graphics.Clear(Color.FromArgb(0, 83, 155));
|
||||
|
||||
using Pen border = new(Color.FromArgb(190, 221, 241), 5f);
|
||||
using Pen key = new(Color.White, 9f)
|
||||
{
|
||||
StartCap = LineCap.Round,
|
||||
EndCap = LineCap.Round,
|
||||
LineJoin = LineJoin.Round
|
||||
};
|
||||
|
||||
graphics.DrawEllipse(border, 7, 7, 113, 113);
|
||||
graphics.DrawEllipse(key, 25, 25, 43, 43);
|
||||
graphics.DrawLine(key, 62, 62, 99, 99);
|
||||
graphics.DrawLine(key, 82, 82, 95, 69);
|
||||
graphics.DrawLine(key, 93, 93, 106, 80);
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,10 @@ public sealed class SguCredentialProvider : CredentialProviderBase
|
||||
ControlKeys.ProviderLogo,
|
||||
"Acceso institucional SGU",
|
||||
ProviderTileIcon.Create());
|
||||
yield return new UserTileControl(
|
||||
ControlKeys.UserTile,
|
||||
"Universidad La Salle",
|
||||
ProviderTileIcon.CreateUserTile());
|
||||
yield return new LargeLabelControl(ControlKeys.Heading, "Acceso institucional SGU");
|
||||
yield return new LargeLabelControl(ControlKeys.Heading, "Acceso institucional SGU")
|
||||
{
|
||||
State = FieldState.DisplayInBoth
|
||||
};
|
||||
yield return new SmallLabelControl(
|
||||
ControlKeys.InformationLabel,
|
||||
"Usa tu clave institucional (DO, AL o AD + 6 dígitos) y contraseña.");
|
||||
|
||||
@@ -16,7 +16,6 @@ internal static class Program
|
||||
[
|
||||
"Universidad La Salle · Acceso SGU",
|
||||
"Acceso institucional SGU",
|
||||
"Universidad La Salle",
|
||||
"Acceso institucional SGU",
|
||||
"Usa tu clave institucional (DO, AL o AD + 6 dígitos) y contraseña.",
|
||||
"Clave institucional",
|
||||
@@ -92,7 +91,7 @@ internal static class Program
|
||||
credentialCount == 1 &&
|
||||
credential != IntPtr.Zero &&
|
||||
providerLogoPresent &&
|
||||
userTilePresent &&
|
||||
!userTilePresent &&
|
||||
labels.SequenceEqual(ExpectedLabels, StringComparer.Ordinal);
|
||||
|
||||
if (mode != "enumeration" && passed)
|
||||
|
||||
@@ -33,18 +33,18 @@ public sealed class ProviderTileIconTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ProviderPublishesABrandedDedicatedUserTileAndHeading()
|
||||
public void ProviderPublishesASingleBrandedImageAndLargeHeading()
|
||||
{
|
||||
SguCredentialProvider provider = new();
|
||||
ControlBase[] controls = provider.GetControls(UsageScenario.Logon).ToArray();
|
||||
|
||||
UserTileControl userTile = Assert.Single(controls.OfType<UserTileControl>());
|
||||
Assert.Empty(controls.OfType<UserTileControl>());
|
||||
Assert.Single(controls.OfType<CredentialProviderLogoControl>());
|
||||
LargeLabelControl heading = Assert.Single(controls.OfType<LargeLabelControl>());
|
||||
SguCredentialTile tile = Assert.IsType<SguCredentialTile>(provider.CreateGenericTile());
|
||||
|
||||
Assert.Equal(ProviderTileIcon.UserTileSize, userTile.Bitmap.Width);
|
||||
Assert.Equal(ProviderTileIcon.UserTileSize, userTile.Bitmap.Height);
|
||||
Assert.Equal("Acceso institucional SGU", heading.Label);
|
||||
Assert.Equal(FieldState.DisplayInBoth, heading.State);
|
||||
Assert.Equal(GenericTileDisplayMode.DisplayAsDedicatedTile, tile.GenericTileDisplayMode);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user