From 8ecfeb71e608478a7b9ad717416ff211f68cd9e5 Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 6 Feb 2024 09:33:09 +0100 Subject: [PATCH] Begin sessions --- app/handlers/login.go | 27 ++++++++++++++++++++++++++- app/handlers/usersession.go | 11 +++++++++++ app/templates/login.templ | 2 +- app/templates/login_templ.go | 2 +- go.mod | 1 + go.sum | 2 ++ 6 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 app/handlers/usersession.go diff --git a/app/handlers/login.go b/app/handlers/login.go index 2506104..24ea0b1 100644 --- a/app/handlers/login.go +++ b/app/handlers/login.go @@ -2,6 +2,8 @@ package handlers import ( "fiber-sessions/app/templates" + "fmt" + "time" "github.com/gofiber/fiber/v2" ) @@ -12,15 +14,32 @@ var pcLogin templates.PageContext = templates.PageContext{ } func checkUsernamePassword(username string, password string) bool { - return username == "pero" && password == "pero" + return true + // return username == "pero" && password == "pero" } func Login(f *fiber.Ctx) error { + session, err := sessionStore.Get(f) + if err != nil { + panic("Error gettings sessionStore: " + err.Error()) + } + + userId := session.Get("userId") + fmt.Printf("userId: %+v\n", userId) + Render(f, templates.RenderLogin(pcLogin)) return nil } func LoginSubmit(f *fiber.Ctx) error { + session, err := sessionStore.Get(f) + if err != nil { + panic("Error gettings sessionStore: " + err.Error()) + } + + userId := session.Get("userId") + fmt.Printf("userId: %+v\n", userId) + content := templates.LoginFormValidationContent{ Validated: true, Username: f.FormValue("username"), @@ -40,6 +59,12 @@ func LoginSubmit(f *fiber.Ctx) error { if !hasError { if checkUsernamePassword(content.Username, content.Password) { + session.Set("userId", "neki-user-id") + session.SetExpiry(time.Second * 60) + if err := session.Save(); err != nil { + panic(err) + } + f.Set("HX-Location", "/") return nil } else { diff --git a/app/handlers/usersession.go b/app/handlers/usersession.go new file mode 100644 index 0000000..0197a95 --- /dev/null +++ b/app/handlers/usersession.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/gofiber/fiber/v2/middleware/session" + "github.com/gofiber/storage/memory/v2" +) + +var sessionStorage = memory.New() +var sessionStore = session.New(session.Config{ + Storage: sessionStorage, +}) diff --git a/app/templates/login.templ b/app/templates/login.templ index d059c0c..00a74bc 100644 --- a/app/templates/login.templ +++ b/app/templates/login.templ @@ -61,7 +61,7 @@ templ RenderLogin(pc PageContext) { hx-target="#login-form-container" hx-swap="outerHTML" > - @LoginFormContent(LoginFormValidationContent{}) + @LoginFormContent(LoginFormValidationContent{Username: "pero", Password: "pero"}) diff --git a/app/templates/login_templ.go b/app/templates/login_templ.go index 8ee4d2c..01879bc 100644 --- a/app/templates/login_templ.go +++ b/app/templates/login_templ.go @@ -216,7 +216,7 @@ func RenderLogin(pc PageContext) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = LoginFormContent(LoginFormValidationContent{}).Render(ctx, templ_7745c5c3_Buffer) + templ_7745c5c3_Err = LoginFormContent(LoginFormValidationContent{Username: "pero", Password: "pero"}).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/go.mod b/go.mod index cf76433..8b06b3d 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( require ( github.com/andybalholm/brotli v1.0.5 // indirect + github.com/gofiber/storage/memory/v2 v2.0.0 // indirect github.com/google/uuid v1.5.0 // indirect github.com/klauspost/compress v1.17.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index d5e90d0..6a74dd8 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1 github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/gofiber/fiber/v2 v2.52.0 h1:S+qXi7y+/Pgvqq4DrSmREGiFwtB7Bu6+QFLuIHYw/UE= github.com/gofiber/fiber/v2 v2.52.0/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/storage/memory/v2 v2.0.0 h1:4Xn+Dx8mvwc+1gRgw9l1GY2qgXQOfUYV0xefDD3tBLs= +github.com/gofiber/storage/memory/v2 v2.0.0/go.mod h1:vGipSznvPX/U8waxPniNMWT+nL0hH4U8XaYZ0m30m0U= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=