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 | e4c4a284571d51dcda373a0a1c047e634b17882d (patch) | |
tree | 2343fba4753576fd33a79e2f2d4fe1484e11f557 /BackEnd/Timeline/Auth/PermissionAuthorizeAttribute.cs | |
parent | b81a66ff49f5d9305108e92a009449ee5994862e (diff) | |
download | timeline-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.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)}";
+ }
+ }
+ }
+}
|