Added PermissionService and added docs to all methods with potential user contact
This commit is contained in:
@@ -3,7 +3,12 @@ using Microsoft.AspNetCore.Mvc;
|
||||
namespace HopFrame.Security.Authorization;
|
||||
|
||||
public class AuthorizedAttribute : TypeFilterAttribute {
|
||||
public AuthorizedAttribute(params string[] permission) : base(typeof(AuthorizedFilter)) {
|
||||
Arguments = new object[] { permission };
|
||||
|
||||
/// <summary>
|
||||
/// If this decorator is present, the endpoint is only accessible if the user provided a valid access token (is logged in)
|
||||
/// </summary>
|
||||
/// <param name="permissions">specifies the permissions the user needs to have in order to access this endpoint</param>
|
||||
public AuthorizedAttribute(params string[] permissions) : base(typeof(AuthorizedFilter)) {
|
||||
Arguments = [permissions];
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,7 @@
|
||||
namespace HopFrame.Security.Authorization;
|
||||
|
||||
internal static class PermissionValidator {
|
||||
|
||||
/// <summary>
|
||||
/// Checks for the user to have the specified permission<br/>
|
||||
/// Permission system:<br/>
|
||||
/// - "*" -> all rights<br/>
|
||||
/// - "group.[name]" -> group member<br/>
|
||||
/// - "[namespace].[name]" -> single permission<br/>
|
||||
/// - "[namespace].*" -> all permissions in the namespace
|
||||
/// </summary>
|
||||
/// <param name="permission">The permission the user needs</param>
|
||||
/// <param name="permissions">All the permissions the user has (includes group permissions)</param>
|
||||
/// <returns></returns>
|
||||
|
||||
public static bool IncludesPermission(string permission, string[] permissions) {
|
||||
if (permission == "*") return true;
|
||||
if (permissions.Contains(permission)) return true;
|
||||
|
||||
Reference in New Issue
Block a user