using Femto.Modules.Auth.Application.Dto; using Femto.Modules.Auth.Models; namespace Femto.Modules.Auth.Application.Services; /// /// I broke off IAuthService from IAuthModule because the CQRS distinction is cumbersome when doing auth handling, /// particularly in regards to session management. I may or may not bother to move the commands and queries here also, /// but for controller actions I do quite like having the abstraction, and there is less drive within me to bother. /// It just seems redundant to expose them both, and it's a bit confusin' /// public interface IAuthService { public Task GetUserWithCredentials( string username, string password, bool createLongTermSession, CancellationToken cancellationToken = default ); public Task GetUserWithId( Guid? userId, CancellationToken cancellationToken = default ); public Task CreateStrongSession(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, bool createLongTermSession, CancellationToken cancellationToken = default); public Task AddSignupCode( string code, string recipientName, CancellationToken cancellationToken = default ); public Task> GetSignupCodes( CancellationToken cancellationToken = default ); } public record UserAndSession(UserInfo User, Session Session);