using TeleWave.Application.Common.Models; namespace TeleWave.Application.Common.Interfaces; public sealed record CurrentUserProfile(Guid Id, string UserName, Guid RoleId, string Role, bool IsBlocked); public sealed record UserSummaryDto( Guid Id, string UserName, string Role, bool IsBlocked, DateTimeOffset CreatedAt ); public interface IIdentityService { /// Создаёт пользователя и назначает роль по умолчанию (см. Infrastructure/Identity/RoleNames). Task> CreateUserAsync( string userName, string password, CancellationToken cancellationToken ); Task> ValidateCredentialsAsync( string userName, string password, CancellationToken cancellationToken ); Task GetProfileAsync(Guid userId, CancellationToken cancellationToken); Task ChangePasswordAsync( Guid userId, string currentPassword, string newPassword, CancellationToken cancellationToken ); Task ChangeUserNameAsync( Guid userId, string newUserName, CancellationToken cancellationToken ); /// Удаляет аккаунт (самоудаление или удаление админом). Task DeleteUserAsync(Guid userId, CancellationToken cancellationToken); Task BlockUserAsync(Guid userId, CancellationToken cancellationToken); Task UnblockUserAsync(Guid userId, CancellationToken cancellationToken); Task> ListUsersAsync( int page, int pageSize, string? search, Guid? roleId, bool? isBlocked, CancellationToken cancellationToken ); Task GetUserAsync(Guid userId, CancellationToken cancellationToken); }