add remember me to API
This commit is contained in:
parent
84457413b2
commit
dac3acfecf
5 changed files with 32 additions and 24 deletions
|
@ -9,10 +9,8 @@ namespace Femto.Api.Controllers.Auth;
|
|||
|
||||
[ApiController]
|
||||
[Route("auth")]
|
||||
public class AuthController(
|
||||
ICurrentUserContext currentUserContext,
|
||||
IAuthService authService
|
||||
) : ControllerBase
|
||||
public class AuthController(ICurrentUserContext currentUserContext, IAuthService authService)
|
||||
: ControllerBase
|
||||
{
|
||||
[HttpPost("login")]
|
||||
public async Task<ActionResult<LoginResponse>> Login(
|
||||
|
@ -23,14 +21,15 @@ public class AuthController(
|
|||
var result = await authService.GetUserWithCredentials(
|
||||
request.Username,
|
||||
request.Password,
|
||||
request.RememberMe,
|
||||
cancellationToken
|
||||
);
|
||||
|
||||
|
||||
if (result is null)
|
||||
return this.BadRequest();
|
||||
|
||||
|
||||
var (user, session) = result;
|
||||
|
||||
|
||||
HttpContext.SetSession(session, user);
|
||||
|
||||
return new LoginResponse(user.Id, user.Username, user.Roles.Any(r => r == Role.SuperUser));
|
||||
|
@ -39,10 +38,15 @@ public class AuthController(
|
|||
[HttpPost("register")]
|
||||
public async Task<ActionResult<RegisterResponse>> Register([FromBody] RegisterRequest request)
|
||||
{
|
||||
var (user, session) = await authService.CreateUserWithCredentials(request.Username, request.Password, request.SignupCode);
|
||||
var (user, session) = await authService.CreateUserWithCredentials(
|
||||
request.Username,
|
||||
request.Password,
|
||||
request.SignupCode,
|
||||
request.RememberMe
|
||||
);
|
||||
|
||||
HttpContext.SetSession(session, user);
|
||||
|
||||
|
||||
return new RegisterResponse(
|
||||
user.Id,
|
||||
user.Username,
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
namespace Femto.Api.Controllers.Auth;
|
||||
|
||||
public record LoginRequest(string Username, string Password);
|
||||
public record LoginRequest(string Username, string Password, bool RememberMe);
|
|
@ -1,3 +1,3 @@
|
|||
namespace Femto.Api.Controllers.Auth;
|
||||
|
||||
public record RegisterRequest(string Username, string Password, string SignupCode, string? Email);
|
||||
public record RegisterRequest(string Username, string Password, string SignupCode, bool RememberMe);
|
|
@ -15,11 +15,10 @@ internal class AuthService(
|
|||
IDbConnectionFactory connectionFactory
|
||||
) : IAuthService
|
||||
{
|
||||
public async Task<UserAndSession?> GetUserWithCredentials(
|
||||
string username,
|
||||
public async Task<UserAndSession?> GetUserWithCredentials(string username,
|
||||
string password,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
bool createLongTermSession,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var user = await context
|
||||
.Users.Where(u => u.Username == username)
|
||||
|
@ -77,12 +76,11 @@ internal class AuthService(
|
|||
await storage.DeleteSession(sessionId);
|
||||
}
|
||||
|
||||
public async Task<UserAndSession> CreateUserWithCredentials(
|
||||
string username,
|
||||
public async Task<UserAndSession> CreateUserWithCredentials(string username,
|
||||
string password,
|
||||
string signupCode,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
bool createLongTermSession,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var now = DateTimeOffset.UtcNow;
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ public interface IAuthService
|
|||
public Task<UserAndSession?> GetUserWithCredentials(
|
||||
string username,
|
||||
string password,
|
||||
bool createLongTermSession,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
public Task<UserInfo?> GetUserWithId(
|
||||
|
@ -25,16 +26,21 @@ public interface IAuthService
|
|||
public Task<Session?> GetSession(string sessionId);
|
||||
public Task DeleteSession(string sessionId);
|
||||
|
||||
public Task<UserAndSession> CreateUserWithCredentials(
|
||||
string username,
|
||||
public Task<UserAndSession> CreateUserWithCredentials(string username,
|
||||
string password,
|
||||
string signupCode,
|
||||
bool createLongTermSession,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
public Task AddSignupCode(
|
||||
string code,
|
||||
string recipientName,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
public Task AddSignupCode(string code, string recipientName, CancellationToken cancellationToken = default);
|
||||
|
||||
public Task<ICollection<SignupCodeDto>> GetSignupCodes(CancellationToken cancellationToken = default);
|
||||
public Task<ICollection<SignupCodeDto>> GetSignupCodes(
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
}
|
||||
|
||||
public record UserAndSession(UserInfo User, Session Session);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue