Пример #1
0
    /// <summary>
    /// Add a user to a group
    /// </summary>
    /// <param name="user"></param>
    public void AddUserToGroup(ProvisionConfigExternalDirectorySync.SynchronizeGroupToGroup group, string userName)
    {
        //Get (create if necesary) the group's manager
        var groupManager = GetManagerForGroup(group.TargetGroupName);

        //Add the user toe hte group
        groupManager.AddUser(userName);
    }
Пример #2
0
 /// <summary>
 /// Add a user to specified Group
 /// </summary>
 /// <param name="targetGroupName"></param>
 /// <param name="asUser"></param>
 /// <param name="sourceGroupName"></param>
 private void AddUserToGroupProvisioningTrackingManager(string targetGroupName, Microsoft.Graph.User graphUser, ProvisionConfigExternalDirectorySync.SynchronizeGroupToGroup targetGroup)
 {
     //Because the request code can run async, and the collection management used is not designed to be thread-safe
     //we are going to serialize adding users to the collection.
     lock (_lock_AddUserToGroupProvisioningTrackingManager)
     {
         AddUserToGroupProvisioningTrackingManager_Inner(targetGroupName, graphUser, targetGroup);
     }
 }
Пример #3
0
    /// <summary>
    /// Add the user to the tracking object
    /// </summary>
    /// <param name="targetGroupName"></param>
    /// <param name="graphUser"></param>
    /// <param name="sourceGroupName"></param>
    private void AddUserToGroupProvisioningTrackingManager_Inner(string targetGroupName, Microsoft.Graph.User graphUser, ProvisionConfigExternalDirectorySync.SynchronizeGroupToGroup targetGroup)
    {
        string emailCandidate = GetUserEmailFromGraphADUser(graphUser);

        IwsDiagnostics.Assert(!string.IsNullOrWhiteSpace(emailCandidate), "843-706: User principal name is NULL");

        //Add the user to our tracking set
        SetManagerForGroups.AddUserToGroup(targetGroup, emailCandidate);
    }
Пример #4
0
    /// <summary>
    /// Itterate down a groups membership, looking in any sub-groups, and record all the members
    /// </summary>
    /// <param name="azureGraph"></param>
    /// <param name="thisGroupsMembers"></param>
    /// <param name="baseGroupToRetrieve"></param>
    async Task AzureRecurseGroupsGenerateGroupMembersList(GraphServiceClient azureGraph, IGroupMembersCollectionWithReferencesPage thisGroupsMembers, ProvisionConfigExternalDirectorySync.SynchronizeGroupToGroup baseGroupToRetrieve)
    {
        var thispage_members = thisGroupsMembers;

        do
        {
            if (thispage_members.Count > 0)
            {
                foreach (var thisMember in thispage_members)
                {
                    var asUser     = thisMember as Microsoft.Graph.User;
                    var asSubGroup = thisMember as Microsoft.Graph.Group;
                    if (asUser != null)
                    {
                        AddUserToGroupProvisioningTrackingManager(
                            baseGroupToRetrieve.TargetGroupName,
                            asUser,
                            baseGroupToRetrieve);
                        //Add them to the list of users
                    }
                    else if (asSubGroup != null)
                    {
                        //-----------------------------------------------------------------------------------
                        //Recurse down the subgroup and get its members
                        //-----------------------------------------------------------------------------------
                        var subGroupsMembers = await azureGraph.Groups[asSubGroup.Id].Members.Request().GetAsync();
                        await AzureRecurseGroupsGenerateGroupMembersList(azureGraph, subGroupsMembers, baseGroupToRetrieve);
                    }
                }
            }

            //Go to the next page
            if (thispage_members.NextPageRequest != null)
            {
                thispage_members = await thispage_members.NextPageRequest.GetAsync();
            }
            else
            {
                thispage_members = null;
            }
        } while (thispage_members != null);
    }