namespace HyperBooru; public class LocalPrincipal : HBObject { public string Name { get; set; } public SecurityIdentifier Sid { get; set; } public List MemberOf { get; set; } public static implicit operator Principal(LocalPrincipal principal) => new() { Name = principal.Name, Sid = principal.Sid, }; public static implicit operator LocalPrincipal(Principal principal) => new() { Name = principal.Name, Sid = principal.Sid }; } public class LocalUser : LocalPrincipal { public string PasswordHash { get; set; } public static implicit operator User(LocalUser user) => new() { Name = user.Name, Sid = user.Sid, }; public static implicit operator LocalUser(User user) => new() { Name = user.Name, Sid = user.Sid }; } public class LocalGroup : LocalPrincipal { public static implicit operator Group(LocalGroup group) => new() { Name = group.Name, Sid = group.Sid, }; public static implicit operator LocalGroup(Group group) => new() { Name = group.Name, Sid = group.Sid }; }