Beispiel #1
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var adElement = ADStructure.GetADElement(value.ToString());

            // Standartmäßiges Bild
            var image = Application.Current.FindResource("Img_User");

            switch ((ADElementType)adElement.Type)
            {
            case ADElementType.Group:
                image = Application.Current.FindResource("Img_Group");
                break;

            case ADElementType.Administrator:
                image = Application.Current.FindResource("Img_Administrator");
                break;

            case ADElementType.Computer:
                image = Application.Current.FindResource("Img_Computer");
                break;

            default:
                break;
            }

            return(image);
        }
Beispiel #2
0
        /// <summary>
        /// Funktion die Ausgeführt wird wenn jemand auf Details im Kontextmenü klickt
        /// </summary>
        public void ContextShowDetails()
        {
            ShowDetails view = new ShowDetails {
                DataContext = this
            };

            view.Show();

            // Füllt den Owner
            Owner = ADStructure.GetADElement(OwnerSid);
        }
Beispiel #3
0
        /// <summary>
        /// Default Constructor
        /// </summary>
        public DirectoryItemViewModel(DirectoryItem item, IEventAggregator eventAggregator)
        {
            // Erstelle Commands
            this.ExpandCommand         = new RelayCommand(Expand);
            this.ShowInExplorerCommand = new RelayCommand(ShowInExplorer);
            this.ShowFilePropsCommand  = new RelayCommand(ShowFileProps);

            // Setze Propertys
            this.Item            = item;
            this.eventAggregator = eventAggregator;

            // Falls der Ordner aufgeklappt werden kann wird ein Dummy Element als Child gesetzt
            if (CanExpand)
            {
                Children = new ObservableCollection <DirectoryItemViewModel>
                {
                    null
                };
            }

            Owner = ADStructure.GetADElement(Item.Owner);
        }
Beispiel #4
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));
            }
        }
Beispiel #5
0
        /// <summary>
        /// Hilfsfunktion die alle Member einer Gruppe ausliest.
        /// </summary>
        /// <param name="groupAce">Das ACE der Gruppe die ausgelesen werden soll</param>
        /// <returns></returns>
        public static List <DirectoryACE> GetMemberInGroup(DirectoryACE groupAce)
        {
            // TODO: Die Abfrage muss noch geändert werden dass auch die Grppen zurückgegeben werden
            List <DirectoryACE> retList = new List <DirectoryACE>();

            // 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 gu.userSID, CASE WHEN u.SID IS NULL THEN 1 ELSE 0 END as _is_group, u.* " +
                         $"FROM ARPS_Test.dbo.adgroups g " +
                         $"JOIN ARPS_Test.dbo.grp_user gu " +
                         $"ON g.SID = gu.grpSID " +
                         $"LEFT JOIN ARPS_Test.dbo.adusers u " +
                         $"ON u.SID = gu.userSID " +
                         $"WHERE g.SID = @GroupSid ";

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

            //Parameter anhängen
            cmd.Parameters.AddWithValue("@GroupSid", groupAce.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
                    bool   isGroup = Convert.ToBoolean(reader["_is_group"]);
                    string sid     = reader["userSID"].ToString();

                    ADElement Element = ADStructure.GetADElement(sid);

                    // falls das Element null ist wird die SID übersprungen
                    if (Element == null)
                    {
                        continue;
                    }

                    // erstellt das ACE falls er aktiv oder eine Gruppe ist
                    if (Element.Enabled || Element.Type == ADElementType.Group)
                    {
                        var nAce = new DirectoryACE(
                            isGroup,
                            (isGroup) ? Element.Name : reader["DisplayName"].ToString() + " (" + reader["UserPrincipalName"].ToString() + ")",
                            "",
                            -1,
                            sid,
                            groupAce.Rights,
                            groupAce.Type,
                            groupAce.FileSystemRight,
                            groupAce.IsInherited,
                            groupAce.InheritanceFlags,
                            groupAce.PropagationFlags);

                        // Falls das ACE eine Gruppe ist werden die Member der Gruppe rekursiv gefüllt
                        if (isGroup)
                        {
                            nAce.Member = new List <DirectoryACE>(GetMemberInGroup(nAce));
                        }

                        // Das ACE wird der Liste hinzugefügt die zurückgegeben wird
                        retList.Add(nAce);
                    }
                }
            }

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

            return(retList);
        }
Beispiel #6
0
 /// <summary>
 /// Konstruktor
 /// </summary>
 /// <param name="userSid"></param>
 public PermissionItemCollection(string userSid)
 {
     // Liest alle Gruppen des Users aus
     AllGroups = new List <ADElement>(ADStructure.GetGroupsFromUser(userSid));
     AllGroups.Add(ADStructure.GetADUser(userSid));
 }