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; }
/// <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; }
/// <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); }
/// <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); }
/// <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)); } }