Exemple #1
0
        public static async Task <bool> CanEditPages(
            this ClaimsPrincipal principal,
            string projectId,
            IAuthorizationService authorizationService
            )
        {
            if (principal == null)
            {
                throw new ArgumentNullException(nameof(principal));
            }
            if (principal.CanEditProject(projectId))
            {
                return(true);
            }

            var claim = principal.FindFirst(ProjectConstants.PageEditorClaimType);

            if (claim != null && claim.Value == projectId)
            {
                return(true);
            }

            if (authorizationService != null)
            {
                try
                {
                    return(await authorizationService.AuthorizeAsync(principal, ProjectConstants.PageEditPolicy).ConfigureAwait(false));
                }
                catch (InvalidOperationException) { }
            }
            return(false);
        }