Exemple #1
0
        private static bool UserIsMemberOfGroup(GraphConnection graphConnection, string userUPN, string groupDisplayName)
        {
            // Get the group for which we want to check membership
            FilterGenerator filter           = new FilterGenerator();
            Expression      filterExpression = ExpressionHelper.CreateEqualsExpression(typeof(Group), GraphProperty.DisplayName, groupDisplayName);

            filter.QueryFilter = filterExpression;
            PagedResults <Group> groupToCheckResults = graphConnection.List <Group>(null, filter);

            if (groupToCheckResults.Results.Count == 1)
            {
                // Add group to our groups to check list
                Group          groupToCheck = groupToCheckResults.Results[0] as Group;
                IList <String> groupsList   = new List <string>();
                groupsList.Add(groupToCheck.ObjectId);

                // Get the user for which we want to check the group membership
                FilterGenerator userFilter           = new FilterGenerator();
                Expression      userFilterExpression = ExpressionHelper.CreateEqualsExpression(typeof(User), GraphProperty.UserPrincipalName, userUPN);
                userFilter.QueryFilter = userFilterExpression;
                User retrievedUser = new User();
                PagedResults <User> pagedUserResults = graphConnection.List <User>(null, userFilter);
                if (pagedUserResults.Results.Count == 1)
                {
                    retrievedUser = pagedUserResults.Results[0] as User;

                    // Check if the user belongs to any of the passed groups
                    IList <String> memberships = graphConnection.CheckMemberGroups(retrievedUser, groupsList);

                    // If the passed group is returned back then the user is a member
                    if (memberships.Contains(groupToCheck.ObjectId))
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    throw new ArgumentException(String.Format("Group {0} does not exist", groupDisplayName));
                }
            }
            else
            {
                throw new ArgumentException(String.Format("User {0} does not exist", userUPN));
            }
        }