public async Task <Guid?> GetUserIdAsync(string identifier) { if (identifier is null) { throw new ArgumentNullException(nameof(identifier)); } var azureSession = azureSessionService.CreateSession(); var azureUser = default(IActiveDirectoryUser); if (identifier.IsEMail()) { var verifiedDomains = await GetVerifiedDomainsAsync() .ConfigureAwait(false); if (!verifiedDomains.Any(domain => identifier.EndsWith($"@{domain}", StringComparison.OrdinalIgnoreCase))) { var defaultDomain = await GetDefaultDomainAsync().ConfigureAwait(false); identifier = $"{identifier.Replace("@", "_", StringComparison.OrdinalIgnoreCase)}#EXT#@{defaultDomain}"; } azureUser = await azureSession.ActiveDirectoryUsers .GetByNameAsync(identifier) .ConfigureAwait(false); } else if (identifier.IsGuid()) { azureUser = await azureSession.ActiveDirectoryUsers .GetByIdAsync(identifier) .ConfigureAwait(false); } if (azureUser is null) { return(null); } return(Guid.Parse(azureUser.Inner.ObjectId)); }
private async Task DeleteResourceGroupAsync(AzureResourceGroup azureResourceGroup) { var session = azureSessionService.CreateSession(azureResourceGroup.SubscriptionId); var mgmtLocks = await GetManagementLocksAsync() .ConfigureAwait(false); if (mgmtLocks.Any()) { await session.ManagementLocks .DeleteByIdsAsync(mgmtLocks.ToArray()) .ConfigureAwait(false); var timeoutDuration = TimeSpan.FromMinutes(5); var timeout = DateTime.UtcNow.Add(timeoutDuration); while (DateTime.UtcNow < timeout && mgmtLocks.Any()) { await Task.Delay(5000).ConfigureAwait(false); mgmtLocks = await GetManagementLocksAsync() .ConfigureAwait(false); } } await session.ResourceGroups .DeleteByNameAsync(azureResourceGroup.ResourceGroupName) .ConfigureAwait(false); async Task <IEnumerable <string> > GetManagementLocksAsync() { var locks = await session.ManagementLocks .ListByResourceGroupAsync(azureResourceGroup.ResourceGroupName, loadAllPages : true) .ConfigureAwait(false); return(locks.Select(lck => lck.Id)); } }