Esempio n. 1
0
 public AccountWithPermissions(ADElementType userType, string identityName, int count, int inheritedCount, string sid)
 {
     this.UserType       = userType;
     this.IdentityName   = identityName;
     this.Count          = count;
     this.InheritedCount = inheritedCount;
     this.SID            = sid;
 }
Esempio n. 2
0
 /// <summary>
 /// Konstruktor für User
 /// </summary>
 /// <param name="sID"></param>
 /// <param name="name"></param>
 /// <param name="samAccountName"></param>
 /// <param name="distinguishedName"></param>
 /// <param name="pricipalName"></param>
 /// <param name="enabled"></param>
 public ADElement(string sid, string name, string samAccountName, string distinguishedName, string pricipalName,
                  bool enabled, ADElementType type = ADElementType.User)
 {
     SID               = sid;
     Name              = name;
     SamAccountName    = samAccountName;
     DistinguishedName = distinguishedName;
     PricipalName      = pricipalName;
     Enabled           = enabled;
     Type              = type;
 }
Esempio n. 3
0
        /// <summary>
        /// Gibt alle AD User zurück die in der Datenbank stehen
        /// </summary>
        /// <returns></returns>
        public static List <ADElement> GetAllADUsers(bool onlyEnabled = false)
        {
            // Erstellt leere Liste die mit den Rückgabewerten befüllt wird
            List <ADElement> retList = new List <ADElement>();

            // erstellt eine MSSQL Verbindung und öffnet Sie
            var mssql = new MsSql();

            mssql.Open();

            // Der SQL Befehl um alle User abzurufen
            string sql = $"SELECT * " +
                         $"FROM {mssql.TBL_AD_Users}";

            if (onlyEnabled)
            {
                sql += $" WHERE Enabled = 1";
            }

            // Sendet den SQL Befehl an den SQL Server
            SqlCommand cmd = new SqlCommand(sql, mssql.Con);

            // Benutzt den SQL Reader um über alle Zeilen der Abfrage zu gehen
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    // Speichert die Daten des Readers in einzelne Variablen
                    string sid               = reader["SID"].ToString();
                    string displayName       = reader["DisplayName"].ToString();
                    string samAccountName    = reader["SamAccountName"].ToString();
                    string distinguishedName = reader["DistinguishedName"].ToString();
                    string userPrincipalName = reader["UserPrincipalName"].ToString();
                    bool   enabled           = Convert.ToBoolean(reader["Enabled"]);

                    bool          isAdmin = IsUserAdmin(sid);
                    ADElementType type    = (isAdmin) ? ADElementType.Administrator : ADElementType.User;

                    retList.Add(new ADElement(sid, displayName, samAccountName, distinguishedName, userPrincipalName, enabled, type));
                }
            }

            // Schließt die MSSQL verbindung
            mssql.Close();

            return(retList);
        }
Esempio n. 4
0
        /// <summary>
        /// Fragt die Datenbank nach der übergebenen sid ab und gibt ein ADElement zurück
        /// </summary>
        /// <param name="sid"></param>
        /// <returns></returns>
        public static ADElement GetADUser(string sid)
        {
            // erstellt eine MSSQL Verbindung und öffnet Sie
            var mssql = new MsSql();

            mssql.Open();

            // Der SQL Befehl um alle Ordner abzurufen die root sind
            string sql = $"SELECT * " +
                         $"FROM {mssql.TBL_AD_Users} " +
                         $"WHERE SID = @Sid";

            // Sendet den SQL Befehl an den SQL Server
            SqlCommand cmd = new SqlCommand(sql, mssql.Con);

            //Parameter anhängen
            cmd.Parameters.AddWithValue("Sid", sid);

            // Benutzt den SQL Reader um über alle Zeilen der Abfrage zu gehen
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    // Speichert die Daten des Readers in einzelne Variablen
                    string displayName       = reader["DisplayName"].ToString();
                    string samAccountName    = reader["SamAccountName"].ToString();
                    string distinguishedName = reader["DistinguishedName"].ToString();
                    string userPrincipalName = reader["UserPrincipalName"].ToString();
                    bool   enabled           = Convert.ToBoolean(reader["Enabled"]);

                    bool          isAdmin = IsUserAdmin(sid);
                    ADElementType type    = (isAdmin) ? ADElementType.Administrator : ADElementType.User;

                    // Schließt die MSSQL verbindung
                    mssql.Close();

                    return(new ADElement(sid, displayName, samAccountName, distinguishedName, userPrincipalName, enabled, type));
                }
            }

            // Schließt die MSSQL verbindung
            mssql.Close();

            return(null);
        }
Esempio n. 5
0
        /// <summary>
        /// NOT USED
        /// Füllt das Property AccountsWithPermissions mit einer Zusammenfassung der User die Berechtigt sind.
        /// Beinhaltet Count (Wie oft ist der User berechtigt) und InheritedCount (Wie oft ist ein User durch Vererbung berechtigt)
        /// </summary>
        public void FillAccountWithPermissons()
        {
            // Falls die ACE nocht nicht vorhanden sind werden diese gefüllt
            if (AllAuthorizedUserACE == null)
            {
                FillAllAuthorizedUserACE();
            }

            // Fragt die ACE ab und Gruppiert und sortiert die Liste
            var ret = from ul in AllAuthorizedUserACE
                      group ul by new
            {
                ul.IdentityName,
                ul.SID
            } into gul
            orderby gul.Key.IdentityName
                select new
            {
                gul.Key.SID,
                gul.Key.IdentityName,
                Count          = gul.Count(),
                InheritedCount = gul.Sum(p => (p.IsInherited) ? 1 : 0)
            };

            // Legt für das Property eine leere Liste an
            this.AccountsWithPermission = new List <AccountWithPermissions>();

            // geht über alle Einträge in der gefilterten und sortierten Liste und fügt sie dem Property hinzu.
            foreach (var user in ret)
            {
                // Prüft ob User Administrator ist
                bool          isAdmin = ADStructure.IsUserAdmin(user.SID);
                ADElementType type    = (isAdmin) ? ADElementType.Administrator : ADElementType.User;

                this.AccountsWithPermission.Add(new AccountWithPermissions(type, user.IdentityName, user.Count, user.InheritedCount, user.SID));
            }
        }