Implement saved sessions

This commit is contained in:
William Bouzourène 2025-01-08 15:21:47 +01:00
parent 9bec3a591e
commit 71e39dcf62
9 changed files with 187 additions and 0 deletions

View file

@ -51,6 +51,10 @@ func LoginForm(c *fiber.Ctx) error {
}
}
if c.FormValue("save_session") == "on" {
sess.Set("create-saved-session", "yes")
}
sess.Set("userid", user.ID)
sess.Save()

View file

@ -16,5 +16,13 @@ func LogoutProcess(c *fiber.Ctx) error {
return err
}
sessionUUID := c.Cookies("saved-session-uuid")
if len(sessionUUID) > 0 {
helpers.RemoveSavedSession(sessionUUID)
c.ClearCookie("saved-session-uuid")
c.ClearCookie("saved-session-secret")
}
return c.Redirect("/")
}

View file

@ -91,6 +91,26 @@ func TotpEnrollPage(c *fiber.Ctx) error {
sess.Set("totp-verified", "yes")
if sess.Get("create-saved-session") == "yes" {
savedSession, secret, err := helpers.CreateSavedSession(user.ID)
if err == nil {
cookieUUID := fiber.Cookie{
Name: "saved-session-uuid",
Value: savedSession.UUID,
Expires: savedSession.Expiration,
}
cookieSecret := fiber.Cookie{
Name: "saved-session-secret",
Value: secret,
Expires: savedSession.Expiration,
}
c.Cookie(&cookieUUID)
c.Cookie(&cookieSecret)
}
}
redirectId := c.Query("redirect")
redirectUrl := "/"
@ -164,6 +184,26 @@ func TotpVerifyPage(c *fiber.Ctx) error {
if c.Method() == "POST" {
otp := c.FormValue("otp")
if totp.Validate(otp, user.TotpSecret.String) {
if sess.Get("create-saved-session") == "yes" {
savedSession, secret, err := helpers.CreateSavedSession(user.ID)
if err == nil {
cookieUUID := fiber.Cookie{
Name: "saved-session-uuid",
Value: savedSession.UUID,
Expires: savedSession.Expiration,
}
cookieSecret := fiber.Cookie{
Name: "saved-session-secret",
Value: secret,
Expires: savedSession.Expiration,
}
c.Cookie(&cookieUUID)
c.Cookie(&cookieSecret)
}
}
redirectId := c.Query("redirect")
redirectUrl := "/"