using GB5Shared.DTO.Framework.Login; using SwDAL.DTO.UserResourceRole; using SwDAL.Enums; namespace SwBLL.UserResourceRole; public interface IUserResourceRoleBLL { Task> GetGrantsForUser(int userId, LoginDTO loginDTO, CancellationToken ct); Task> GetGranteesForServer(int dbServerId, LoginDTO loginDTO, CancellationToken ct); Task> GetGranteesForClientDb(int clientDbId, LoginDTO loginDTO, CancellationToken ct); /// The one reusable authorization primitive every enforcement call site uses. /// Returns null when no grant is configured for this user against this resource — callers /// decide for themselves whether "no grant" means fail-open or fail-closed; this method /// never assumes a default. Never cached — a stale grant is a security bug, not a UX /// inconvenience. Task GetEffectiveRole(int userId, int? dbServerId, int? clientDbId, LoginDTO loginDTO, CancellationToken ct); Task AssignUserResourceRole(AssignUserResourceRoleDTO dto, LoginDTO loginDTO, CancellationToken ct); Task RevokeUserResourceRole(RevokeUserResourceRoleDTO dto, LoginDTO loginDTO, CancellationToken ct); }