Implement saved sessions
This commit is contained in:
parent
9bec3a591e
commit
71e39dcf62
9 changed files with 187 additions and 0 deletions
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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("/")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 := "/"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue