using Ablera.Serdica.Authority.Plugins.LdapUtilities.Services;
using Ablera.Serdica.Authority.Plugin.Ldap.Models;
using Microsoft.Extensions.Logging;
using Ablera.Serdica.Extensions.Novell.Directory.Ldap.Attributes;
using Ablera.Serdica.Extensions.Novell.Directory.Ldap.Contracts;

namespace Ablera.Serdica.Authority.Plugin.Bulstrad;
/// <summary>
/// Customer‑specific LDAP user manager that piggy‑backs on <see cref="LdapUserManager{TAccount}"/>
/// but adds Bulstrad‑specific semantics:
/// <list type="bullet">
/// <item>Accepts only <see cref="BulstradAdIdentity"/> objects.</item>
/// <item>Denies login if <c>bstDStatus != "active"</c>.</item>
/// <item>Emits extra role/department claims (<c>bstRole</c>, <c>departmentNumber</c>).</item>
/// </list>
/// </summary>
public sealed class BulstradAdIdentityFacade : LdapIdentityFacadeBase<BulstradAdIdentity, string>
{
    public BulstradAdIdentityFacade(
        ILogger<BulstradAdIdentityFacade> logger,
        ILogger<LdapIdentityFacadeBase<BulstradAdIdentity, string>> logger2,
        BulstradAsLdapSettingsProvider ldapSettingsProvider,
        IEmailNormalizer emailNormalizer,
        IUsernameNormalizer usernameNormalizer)
            : base(logger2, ldapSettingsProvider, emailNormalizer, usernameNormalizer)
    {
    }
}

