diff options
author | crupest <crupest@outlook.com> | 2020-11-12 21:38:43 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-11-12 21:38:43 +0800 |
commit | ee1b2b5b100268aa510257a1a2cd4cd03f9fc72b (patch) | |
tree | 221a2af5008e180e180f5400f127a0d404ed5158 /BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs | |
parent | 2c6b812382e04956793d90ba4148dd4aa7da3b70 (diff) | |
download | timeline-ee1b2b5b100268aa510257a1a2cd4cd03f9fc72b.tar.gz timeline-ee1b2b5b100268aa510257a1a2cd4cd03f9fc72b.tar.bz2 timeline-ee1b2b5b100268aa510257a1a2cd4cd03f9fc72b.zip |
...
Diffstat (limited to 'BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs')
-rw-r--r-- | BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs | 30 |
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)}";
+ }
+ }
+ }
+}
|