// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; namespace Microsoft.AspNet.Authorization { public static class AuthorizationServiceExtensions { /// /// Checks if a user meets a specific requirement for the specified resource /// /// /// /// /// public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, object resource, IAuthorizationRequirement requirement) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (requirement == null) { throw new ArgumentNullException(nameof(requirement)); } return service.AuthorizeAsync(user, resource, new IAuthorizationRequirement[] { requirement }); } /// /// Checks if a user meets a specific authorization policy /// /// The authorization service. /// The user to check the policy against. /// The resource the policy should be checked with. /// The policy to check against a specific context. /// true when the user fulfills the policy, false otherwise. public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, object resource, AuthorizationPolicy policy) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (policy == null) { throw new ArgumentNullException(nameof(policy)); } return service.AuthorizeAsync(user, resource, policy.Requirements.ToArray()); } /// /// Checks if a user meets a specific authorization policy /// /// The authorization service. /// The user to check the policy against. /// The policy to check against a specific context. /// true when the user fulfills the policy, false otherwise. public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, AuthorizationPolicy policy) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (policy == null) { throw new ArgumentNullException(nameof(policy)); } return service.AuthorizeAsync(user, resource: null, policy: policy); } /// /// Checks if a user meets a specific authorization policy /// /// The authorization service. /// The user to check the policy against. /// The name of the policy to check against a specific context. /// true when the user fulfills the policy, false otherwise. public static Task AuthorizeAsync(this IAuthorizationService service, ClaimsPrincipal user, string policyName) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (policyName == null) { throw new ArgumentNullException(nameof(policyName)); } return service.AuthorizeAsync(user, resource: null, policyName: policyName); } } }