CSLA.NET 5.4.2
CSLA .NET is a software development framework that helps you build a reusable, maintainable object-oriented business layer for your app.
Csla.Web.Mvc.Shared/CslaPermissionRequirement.cs
Go to the documentation of this file.
1//-----------------------------------------------------------------------
2// <copyright file="HasPermissionAttribute.cs" company="Marimer LLC">
3// Copyright (c) Marimer LLC. All rights reserved.
4// Website: https://cslanet.com
5// </copyright>
6// <summary>Restricts callers to an action method.</summary>
7//-----------------------------------------------------------------------
8#if NETSTANDARD2_0 || NET5_0 || NETCORE3_1
9using System;
10using System.Threading.Tasks;
11using Csla.Rules;
12using Microsoft.AspNetCore.Authorization;
13
14namespace Csla.Web.Mvc
15{
19 public class CslaPermissionRequirement : IAuthorizationRequirement
20 {
24 public AuthorizationActions Action { get; }
28 public Type ObjectType { get; }
29
35 public CslaPermissionRequirement(AuthorizationActions action, Type objectType)
36 {
37 Action = action;
38 ObjectType = objectType;
39 }
40 }
41
45 public class CslaPermissionHandler : AuthorizationHandler<CslaPermissionRequirement>
46 {
52 public override Task HandleAsync(AuthorizationHandlerContext context)
53 {
54 foreach (var item in context.PendingRequirements)
55 if (item is CslaPermissionRequirement cr)
56 HandleRequirementAsync(context, cr);
57 return Task.CompletedTask;
58 }
59
66 protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
67 CslaPermissionRequirement requirement)
68 {
69 if (context.User == null || !context.User.Identity.IsAuthenticated)
70 context.Fail();
71 else if (BusinessRules.HasPermission(requirement.Action, requirement.ObjectType))
72 context.Succeed(requirement);
73 return Task.CompletedTask;
74 }
75 }
76}
77#endif
AuthorizationActions
Authorization actions.