/// <inheritdoc/> public void OnAuthorization(AuthorizationFilterContext context) { bool isAuthorized = false; var principal = principalProvider.GetPrincipal(); if (principal == null) { throw new UnexpectedNullException("Principal could not be retrieved."); } foreach (var role in requirement.RequiredRoles) { if (principal.IsInRole(role)) { isAuthorized = true; break; } } if (!isAuthorized) { string message = string.Concat("One or more roles are missing: ", string.Join(", ", requirement.RequiredRoles)); Debug.WriteLine(message); throw new ForbiddenException(message); } }
/// <inheritdoc/> public bool IsAuthorized(string ownerId) { try { Ensure.ArgumentNotNullOrWhiteSpace(ownerId, nameof(ownerId)); var principal = principalProvider.GetPrincipal(); if (principal == null) { throw new UnexpectedNullException("Principal could not be retrieved."); } if (ownerId.Equals(principal.Identity.Name) || principal.IsInRole(RoleType.Administrator)) { return(true); } } catch (Exception e) { logger.LogError(e, e.Message); } return(false); }