aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-11-12 21:38:43 +0800
committercrupest <crupest@outlook.com>2020-11-12 21:38:43 +0800
commite4c4a284571d51dcda373a0a1c047e634b17882d (patch)
tree2343fba4753576fd33a79e2f2d4fe1484e11f557 /BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs
parentb81a66ff49f5d9305108e92a009449ee5994862e (diff)
downloadtimeline-e4c4a284571d51dcda373a0a1c047e634b17882d.tar.gz
timeline-e4c4a284571d51dcda373a0a1c047e634b17882d.tar.bz2
timeline-e4c4a284571d51dcda373a0a1c047e634b17882d.zip
...
Diffstat (limited to 'BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs')
-rw-r--r--BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs30
1 files changed, 30 insertions, 0 deletions
diff --git a/BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs b/BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs
new file mode 100644
index 00000000..3df8dee5
--- /dev/null
+++ b/BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs
@@ -0,0 +1,30 @@
+using Microsoft.AspNetCore.Authorization;
+using System;
+using System.Linq;
+using Timeline.Services;
+
+namespace Timeline.Auth
+{
+ public class PermissionAuthorizeAttribute : AuthorizeAttribute
+ {
+ public PermissionAuthorizeAttribute()
+ {
+
+ }
+
+ public PermissionAuthorizeAttribute(params UserPermission[] permissions)
+ {
+ Permissions = permissions;
+ }
+
+ public UserPermission[] Permissions
+ {
+ get => Policy == null ? Array.Empty<UserPermission>() : Policy[PermissionPolicyProvider.PolicyPrefix.Length..].Split(',')
+ .Select(s => Enum.Parse<UserPermission>(s)).ToArray();
+ set
+ {
+ Policy = $"{PermissionPolicyProvider.PolicyPrefix}{string.Join(',', value)}";
+ }
+ }
+ }
+}