diff options
Diffstat (limited to 'Services')
| -rw-r--r-- | Services/SecurityService.cs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Services/SecurityService.cs b/Services/SecurityService.cs index e365266..2d23a58 100644 --- a/Services/SecurityService.cs +++ b/Services/SecurityService.cs @@ -5,6 +5,15 @@ using System.Data; namespace HyperBooru.Services; public interface ISecurityService { + public IPrincipal[]? SearchPrincipals(string name); + public IPrincipal? GetPrincipal(string name); + public IUser? GetUser(string name); + public IGroup? GetGroup(string name); + public bool ValidatePassword(IUser user, string password); + + public SecurityIdentifier? TranslateName(string name); + public string TranslateName(SecurityIdentifier sid); + public IEnumerable<HBObject> Filter( IEnumerable<HBObject> objects, IPrincipal principal, @@ -51,6 +60,37 @@ public class SecurityService : ISecurityService { }; } + public IPrincipal[]? SearchPrincipals(string name) => + principalProvider.SearchPrincipals(name); + + public IPrincipal? GetPrincipal(string name) => + principalProvider.GetPrincipal(name); + + public IUser? GetUser(string name) => + principalProvider.GetUser(name); + + public IGroup? GetGroup(string name) => + principalProvider.GetGroup(name); + + public bool ValidatePassword(IUser user, string password) => + principalProvider.ValidatePassword(user, password); + + public string TranslateName(SecurityIdentifier sid) { + var wellKnownSid = WellKnownSid.TranslateName(sid); + if(wellKnownSid is not null) + return wellKnownSid; + + return sid.SddlForm; + } + + public SecurityIdentifier? TranslateName(string name) { + var wellKnownSid = WellKnownSid.TranslateName(name); + if(wellKnownSid is not null) + return wellKnownSid; + + throw new NotImplementedException(); + } + public IEnumerable<HBObject> Filter( IEnumerable<HBObject> objects, IPrincipal principal, |
