diff options
| author | Bobby <[email protected]> | 2025-12-22 14:44:37 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-22 14:44:37 +0530 |
| commit | 318360a60aa52cf91ac80d547285f4d14c2c4517 (patch) | |
| tree | b5261424716c4ecbe4085dfe914e99223a1a610d /session | |
| parent | 32ee8047eba06c9f1c7575b66fc0f9195657ac04 (diff) | |
| download | lain-318360a60aa52cf91ac80d547285f4d14c2c4517.tar.xz lain-318360a60aa52cf91ac80d547285f4d14c2c4517.zip | |
imap client, flash messages, imap login verification
Diffstat (limited to 'session')
| -rw-r--r-- | session/functions.go | 33 | ||||
| -rw-r--r-- | session/kv.go | 32 | ||||
| -rw-r--r-- | session/session.go | 5 |
3 files changed, 49 insertions, 21 deletions
diff --git a/session/functions.go b/session/functions.go index 589091f..776fddd 100644 --- a/session/functions.go +++ b/session/functions.go @@ -2,35 +2,26 @@ package session import "github.com/gofiber/fiber/v2" -func CreateSession(context *fiber.Ctx, email string) error { - sess, err := Store.Get(context) - if err != nil { - return err - } +const emailKey = "email" - sess.Set("email", email) - return sess.Save() +func CreateSession(ctx *fiber.Ctx, email string) error { + return Set(ctx, emailKey, email) } -func DestroySession(context *fiber.Ctx) error { - sess, err := Store.Get(context) - if err != nil { - return err - } - - return sess.Destroy() +func DestroySession(ctx *fiber.Ctx) error { + return Delete(ctx, emailKey) } -func GetSessionEmail(context *fiber.Ctx) (string, error) { - sess, err := Store.Get(context) - if err != nil { +func GetSessionEmail(ctx *fiber.Ctx) (string, error) { + value, err := Get(ctx, emailKey) + if err != nil || value == nil { return "", err } - email := sess.Get("email") - if emailStr, ok := email.(string); ok { - return emailStr, nil + email, ok := value.(string) + if !ok { + return "", nil } - return "", nil + return email, nil } diff --git a/session/kv.go b/session/kv.go new file mode 100644 index 0000000..eecd4c5 --- /dev/null +++ b/session/kv.go @@ -0,0 +1,32 @@ +package session + +import "github.com/gofiber/fiber/v2" + +func Set(ctx *fiber.Ctx, key string, value any) error { + sess, err := Store.Get(ctx) + if err != nil { + return err + } + + sess.Set(key, value) + return sess.Save() +} + +func Get(ctx *fiber.Ctx, key string) (any, error) { + sess, err := Store.Get(ctx) + if err != nil { + return nil, err + } + + return sess.Get(key), nil +} + +func Delete(ctx *fiber.Ctx, key string) error { + sess, err := Store.Get(ctx) + if err != nil { + return err + } + + sess.Delete(key) + return sess.Save() +} diff --git a/session/session.go b/session/session.go index c24817a..c90c810 100644 --- a/session/session.go +++ b/session/session.go @@ -1,11 +1,13 @@ package session import ( + "encoding/gob" "fmt" "lain/config" "log" "time" + "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/session" "github.com/gofiber/storage/postgres/v3" ) @@ -13,6 +15,9 @@ import ( var Store *session.Store func init() { + gob.Register(fiber.Map{}) + log.Println("gob: registered fiber.Map for session storage") + storage := postgres.New(postgres.Config{ Host: config.Database.Host, Port: config.Database.Port, |
