/// <summary> /// Inner wrapper for async operations /// </summary> /// <returns></returns> private async Task Execute_Async() { var azureGraphSession = AzureGetGraphSession(); //=================================================================================== //Get Groups that map to Tableau Site User Roles from Azure //=================================================================================== _statusLogs.AddStatus("Azure: Getting user roles groups"); await GenerateUsersRolesList_FromAzureGroupsSyncList(azureGraphSession, _configSyncGroups.GroupsToRolesSyncList); //=================================================================================== //Get Groups that map to Tableau Site Groups from Azure //=================================================================================== _statusLogs.AddStatus("Azure: Getting user roles groups"); await GenerateGroupsMembersList_FromAzureGroupsSyncList(azureGraphSession, _configSyncGroups.GroupsToGroupsSyncList); //=================================================================================== //Now perform any replace/override operations we need to based on explicit users //=================================================================================== _statusLogs.AddStatus("Replacing any explicit user/role overrides"); foreach (var thisOverrideUser in _configSyncGroups.UserRolesOverrideList) { SetManagerForRoles.AddAndForceReplaceUser(thisOverrideUser); } //Mark the work status as complete IsExecuteComplete.Trigger(); }
/// <summary> /// Add a user to our tracking list /// </summary> /// <param name="tableauRole"></param> /// <param name="graphUser"></param> private void AddUserToRoleProvisioningTrackingManager_Inner(string tableauRole, string authModel, Microsoft.Graph.User graphUser, string sourceGroupName) { string emailCandidate = GetUserEmailFromGraphADUser(graphUser); IwsDiagnostics.Assert(!string.IsNullOrWhiteSpace(emailCandidate), "813-326: User principal name is NULL"); //Add the user to our tracking set SetManagerForRoles.AddUser(new ProvisioningUser(emailCandidate, tableauRole, authModel, sourceGroupName)); }