예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }