using HopFrame.Database.Models;
namespace HopFrame.Security.Services;
///
/// permission system:
/// - "*" -> all rights
/// - "group.[name]" -> group member
/// - "[namespace].[name]" -> single permission
/// - "[namespace].*" -> all permissions in the namespace
///
public interface IPermissionService {
Task HasPermission(string permission, Guid user);
Task> GetPermissionGroups();
Task GetPermissionGroup(string name);
Task EditPermissionGroup(PermissionGroup group);
Task> GetUserPermissionGroups(User user);
Task RemoveGroupFromUser(User user, PermissionGroup group);
Task CreatePermissionGroup(string name, bool isDefault = false, string description = null);
Task DeletePermissionGroup(PermissionGroup group);
Task GetPermission(string name, IPermissionOwner owner);
///
/// permission system:
/// - "*" -> all rights
/// - "group.[name]" -> group member
/// - "[namespace].[name]" -> single permission
/// - "[namespace].*" -> all permissions in the namespace
///
///
///
///
Task AddPermission(IPermissionOwner owner, string permission);
Task RemovePermission(Permission permission);
Task GetFullPermissions(string user);
}