using TIAM.Entities.Permissions; using TIAM.Models.Dtos.Products; namespace TIAMWebApp.Shared.Application.Interfaces { public interface IPermissionService { //1. create a permission to be assigned to users to access a context public Task CreatePermissionForContextByContextIdAsync(Guid contextId); //2. get the contexts where the user has permission public Task> GetPermissionContextsByUserIdAsync(Guid userId); //3. get the users who have permission for a context public Task> GetPermissionsForContextByContextIdAsync(Guid contextId); //4. give a user permission to access a context public Task AssignPermissionToUserForContextAsync(Guid contextId, Guid userId); //5. remove a user's permission to access a context public Task RemovePermissionFromUserByContextIdAsync(Guid contextId, Guid permissionId, Guid userId); //6. remove all permissions of a user for a context public Task RemoveAllPermissionsByContextIdAsync(Guid contextId, Guid userId); //7. remove all permissions of a user (BAN user from all contexts, even the system) public Task RemoveAllPermissionsByUserIdAsync(Guid userId); //8. create permission group public Task CreatePermissionGroupForContextAsync(Guid contextId, string name); //9. add user to permission group public Task AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId); //10. create permission type public Task CreatePermissionTypeAsync(string name, Guid contextId); //11. get permission types for context public Task>? GetPermissionTypesForContextByContextIdAsync(Guid contextId); //12. get permission groups for context public Task GetPermissionGroupsForContextByContextIdAsync(Guid contextId); } }