summaryrefslogtreecommitdiff
path: root/session
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-22 14:44:37 +0530
committerBobby <[email protected]>2025-12-22 14:44:37 +0530
commit318360a60aa52cf91ac80d547285f4d14c2c4517 (patch)
treeb5261424716c4ecbe4085dfe914e99223a1a610d /session
parent32ee8047eba06c9f1c7575b66fc0f9195657ac04 (diff)
downloadlain-318360a60aa52cf91ac80d547285f4d14c2c4517.tar.xz
lain-318360a60aa52cf91ac80d547285f4d14c2c4517.zip
imap client, flash messages, imap login verification
Diffstat (limited to 'session')
-rw-r--r--session/functions.go33
-rw-r--r--session/kv.go32
-rw-r--r--session/session.go5
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,