File: ADRoleFactory.cs

package info (click to toggle)
mono 6.12.0.199%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,296,836 kB
  • sloc: cs: 11,181,803; xml: 2,850,076; ansic: 699,709; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,853; makefile: 20,405; sh: 15,009; python: 4,839; pascal: 925; sql: 859; sed: 16; php: 1
file content (99 lines) | stat: -rw-r--r-- 3,569 bytes parent folder | download | duplicates (7)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
using System.Security.Principal;
using System.Configuration;
using System.Workflow.Runtime.Configuration;
using System.Workflow.Activities.Configuration;

#endregion

namespace System.Workflow.Activities
{
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public static class ActiveDirectoryRoleFactory
    {
        private static DirectoryGroupQuery s_directoryGroupQuery = new DirectoryGroupQuery();
        private static String s_configurationSectionName = "System.Workflow.Runtime.Hosting.ADRoleFactory";
        private static ActiveDirectoryRoleFactoryConfiguration s_configuration;
        private static DirectoryEntry s_rootEntry;

        static ActiveDirectoryRoleFactory()
        {
            s_configuration = (ActiveDirectoryRoleFactoryConfiguration)ConfigurationManager.GetSection(s_configurationSectionName);
            if (s_configuration == null)
                s_configuration = new ActiveDirectoryRoleFactoryConfiguration();
        }


        public static ActiveDirectoryRole CreateFromAlias(String alias)
        {
            if (alias == null)
                throw new ArgumentNullException("alias");

            ActiveDirectoryRole role = new ActiveDirectoryRole(GetRootEntry(), new DirectoryRootQuery("sAMAccountName", alias, DirectoryQueryOperation.Equal));
            role.Operations.Add(s_directoryGroupQuery);
            ValidateRole(role);
            return role;
        }

        public static ActiveDirectoryRole CreateFromSecurityIdentifier(SecurityIdentifier sid)
        {
            if (sid == null)
                throw new ArgumentNullException("sid");

            ActiveDirectoryRole role = new ActiveDirectoryRole(GetRootEntry(), new DirectoryRootQuery("objectSID", sid.ToString(), DirectoryQueryOperation.Equal));
            role.Operations.Add(s_directoryGroupQuery);
            ValidateRole(role);
            return role;
        }

        public static ActiveDirectoryRole CreateFromEmailAddress(String emailAddress)
        {
            if (emailAddress == null)
                throw new ArgumentNullException("emailAddress");

            ActiveDirectoryRole role = new ActiveDirectoryRole(GetRootEntry(), new DirectoryRootQuery("mail", emailAddress, DirectoryQueryOperation.Equal));
            role.Operations.Add(s_directoryGroupQuery);
            ValidateRole(role);
            return role;
        }

        private static DirectoryEntry GetRootEntry()
        {
            if (s_rootEntry == null)
            {
                if (s_configuration == null ||
                    s_configuration.RootPath == null ||
                    s_configuration.RootPath.Length == 0)
                {
                    s_rootEntry = new DirectoryEntry();
                }
                else
                {
                    s_rootEntry = new DirectoryEntry(s_configuration.RootPath);
                }
            }

            return s_rootEntry;
        }

        public static ActiveDirectoryRoleFactoryConfiguration Configuration
        {
            get
            {
                return s_configuration;
            }
        }

        private static void ValidateRole(ActiveDirectoryRole adRole)
        {
            if (adRole.GetEntries().Count == 0)
                throw new ArgumentException(SR.GetString(SR.Error_NoMatchingActiveDirectoryEntry));
        }

    }
}