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); }