using Femto.Modules.Auth.Application.Dto; using Femto.Modules.Auth.Models; namespace Femto.Modules.Auth.Application; public interface IAuthService { public Task AuthenticateUserCredentials( string username, string password, CancellationToken cancellationToken = default ); public Task GetUserWithId( Guid? userId, CancellationToken cancellationToken = default ); public Task CreateNewSession(Guid userId); public Task CreateWeakSession(Guid userId); public Task GetSession(string sessionId); public Task DeleteSession(string sessionId); public Task CreateUserWithCredentials(string username, string password, string signupCode, CancellationToken cancellationToken = default); public Task AddSignupCode( string code, string recipientName, CancellationToken cancellationToken = default ); public Task> GetSignupCodes( CancellationToken cancellationToken = default ); Task CreateRememberMeToken(Guid userId); Task<(UserInfo?, NewRememberMeToken?)> GetUserWithRememberMeToken(RememberMeToken rememberMeToken); Task DeleteRememberMeToken(RememberMeToken rememberMeToken); Task ChangePassword(Guid userId, string password, CancellationToken cancellationToken = default); Task InvalidateUserSessions(Guid userId, CancellationToken cancellationToken = default); } public record UserAndSession(UserInfo User, Session Session);