public async Task <bool> HasRoles(User user, string roleNames, CancellationToken token) { string[] names = roleNames.Split(','); bool userHasRole = true; foreach (string name in names) { string roleName = name.Trim(); try { DirectoryRole role = await FindRoleByName(roleName, token); if (role == null) { DirectoryRoleTemplate drt = await FindRoleTemplateByName(roleName, token); if (drt == default(DirectoryRoleTemplate)) { Trace.WriteLine($"Could not find role template '{roleName}'"); return(false); } await EnableRole(drt.Id, token); role = await FindRoleByName(roleName, token); if (role == default(DirectoryRole)) { Trace.WriteLine($"Could not find role '{roleName}'"); return(false); } } DirectoryObject member = await GetRoleMember(role, user, token); userHasRole &= (member != default(DirectoryObject)); } catch (Exception ex) { Trace.WriteLine(ex, $"Could not add role(s) '{roleNames}' to PowerShell user {user.UserPrincipalName}"); return(false); } } return(userHasRole); }
/// <summary> /// Add new entity to directoryRoleTemplates /// <param name="body"></param> /// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param> /// </summary> public RequestInformation CreatePostRequestInformation(DirectoryRoleTemplate body, Action <DirectoryRoleTemplatesRequestBuilderPostRequestConfiguration> requestConfiguration = default) { _ = body ?? throw new ArgumentNullException(nameof(body)); var requestInfo = new RequestInformation { HttpMethod = Method.POST, UrlTemplate = UrlTemplate, PathParameters = PathParameters, }; requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body); if (requestConfiguration != null) { var requestConfig = new DirectoryRoleTemplatesRequestBuilderPostRequestConfiguration(); requestConfiguration.Invoke(requestConfig); requestInfo.AddRequestOptions(requestConfig.Options); requestInfo.AddHeaders(requestConfig.Headers); } return(requestInfo); }