femto-backend/Femto.Api/Sessions/HttpContextSessionExtensions.cs

60 lines
1.7 KiB
C#

using Femto.Api.Auth;
using Femto.Modules.Auth.Application.Dto;
namespace Femto.Api.Sessions;
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(
"uname",
user.Username,
new CookieOptions
{
Secure = cookieSettings.Secure,
SameSite = cookieSettings.SameSite ? SameSiteMode.Strict : SameSiteMode.Unspecified,
Expires = session.Expires,
}
);
}
public static void DeleteSession(this HttpContext httpContext)
{
httpContext.Response.Cookies.Delete("session");
httpContext.Response.Cookies.Delete("hasSession");
}
}