using PostFundManagement.Domain.Attributes; using PostFundManagement.Domain.Models.Security; namespace PostFundManagement.Domain.Abstractions; public interface ISkorubaUserService { [Log] [Audit] Task> CreateUserAsync(CreateUserRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetUserAsync(Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateUserAsync(UpdateUserRequest request, CancellationToken cancellationToken = default); [Log] [Audit] Task SetUserLockoutAsync(Guid userId, bool disabled, CancellationToken cancellationToken = default); [Log] [Audit] Task AddClaimAsync(Guid userId, string claimType, string claimValue, CancellationToken cancellationToken = default); [Log] [Audit] Task RemoveClaimAsync(Guid userId, int claimId, CancellationToken cancellationToken = default); [Log] [Audit] Task AddRoleAsync(Guid userId, Guid roleId, CancellationToken cancellationToken = default); [Log] [Audit] Task RemoveRoleAsync(Guid userId, Guid roleId, CancellationToken cancellationToken = default); [Log] Task> GetAvailableRolesAsync(string? searchText = null, int page = 1, int pageSize = 50, CancellationToken cancellationToken = default); [Log] Task> GetUserRolesAsync(Guid userId, int page = 1, int pageSize = 50, CancellationToken cancellationToken = default); [Log] Task> GetUserClaimsAsync(Guid userId, int page = 1, int pageSize = 50, CancellationToken cancellationToken = default); [Log] Task> GetRoleClaimsAsync(Guid roleId, CancellationToken cancellationToken = default); [Log] Task InvalidateUserSessionAsync(Guid userId, CancellationToken cancellationToken = default); }