summaryrefslogtreecommitdiff
path: root/LocalPrincipal.cs
blob: 28a272111d19d89953bcbf30cd54d1026d1de589 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
namespace HyperBooru;

public class LocalPrincipal : HBObject {
    public string             Name     { get; set; }
    public SecurityIdentifier Sid      { get; set; }
    public List<LocalGroup>   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
        };
}