add username and userid cookies

This commit is contained in:
john 2025-05-20 09:20:50 +02:00
parent 0d34774059
commit a6fef1929c
3 changed files with 29 additions and 9 deletions

View file

@ -38,15 +38,18 @@ internal class SessionAuthenticationHandler(
};
claims.AddRange(
result.User.Roles
.Select(role => new Claim(ClaimTypes.Role, role.ToString()))
result.User.Roles.Select(role => new Claim(ClaimTypes.Role, role.ToString()))
);
var identity = new ClaimsIdentity(claims, this.Scheme.Name);
var principal = new ClaimsPrincipal(identity);
this.Context.SetSession(result.Session, cookieOptions.Value);
currentUserContext.CurrentUser = new CurrentUser(result.User.Id, result.User.Username, result.Session.SessionId);
this.Context.SetSession(result.Session, result.User, cookieOptions.Value);
currentUserContext.CurrentUser = new CurrentUser(
result.User.Id,
result.User.Username,
result.Session.SessionId
);
return AuthenticateResult.Success(
new AuthenticationTicket(principal, this.Scheme.Name)

View file

@ -28,7 +28,7 @@ public class AuthController(
{
var result = await authModule.Command(new LoginCommand(request.Username, request.Password));
HttpContext.SetSession(result.Session, cookieSettings.Value);
HttpContext.SetSession(result.Session, result.User, cookieSettings.Value);
return new LoginResponse(
result.User.Id,
@ -44,7 +44,7 @@ public class AuthController(
new RegisterCommand(request.Username, request.Password, request.SignupCode)
);
HttpContext.SetSession(result.Session, cookieSettings.Value);
HttpContext.SetSession(result.Session, result.User, cookieSettings.Value);
return new RegisterResponse(
result.User.Id,

View file

@ -8,24 +8,41 @@ internal static class HttpContextSessionExtensions
public static void SetSession(
this HttpContext httpContext,
Session session,
UserInfo user,
CookieSettings cookieSettings
)
{
var secure = cookieSettings.Secure;
var sameSite = cookieSettings.SameSite ? SameSiteMode.Strict : SameSiteMode.Unspecified;
var expires = session.Expires;
httpContext.Response.Cookies.Append(
"session",
session.SessionId,
new CookieOptions
{
HttpOnly = true,
Secure = secure,
SameSite = sameSite,
Expires = expires,
}
);
httpContext.Response.Cookies.Append(
"uid",
user.Id.ToString(),
new CookieOptions
{
Secure = cookieSettings.Secure,
SameSite = cookieSettings.SameSite ? SameSiteMode.Strict : SameSiteMode.Unspecified,
Expires = session.Expires,
}
);
httpContext.Response.Cookies.Append(
"hasSession",
"true",
"uname",
user.Username,
new CookieOptions
{
Secure = cookieSettings.Secure,