tijl.dev-core/internal/user/sessions.go

58 lines
1.3 KiB
Go
Raw Normal View History

2024-08-22 12:57:38 +02:00
package user
2024-08-21 17:31:03 +02:00
import (
"context"
2024-08-21 17:54:36 +02:00
"errors"
2024-08-21 17:31:03 +02:00
2024-08-22 14:58:43 +02:00
"git.tijl.dev/tijl/tijl.dev/internal/queries"
2024-08-21 17:31:03 +02:00
"git.tijl.dev/tijl/tijl.dev/internal/utils"
2024-08-22 14:58:43 +02:00
"git.tijl.dev/tijl/tijl.dev/modules/db"
2024-08-21 17:31:03 +02:00
"github.com/gofiber/fiber/v2"
)
func NewSession(uid string, c *fiber.Ctx) (string, error) {
2024-08-22 14:58:43 +02:00
createSessionParams := queries.CreateSessionParams{
2024-08-21 17:31:03 +02:00
Uid: uid,
Token: utils.RandString(64),
}
err := db.Queries.CreateSession(context.TODO(), createSessionParams)
if err != nil {
return "", err
}
c.Cookie(&fiber.Cookie{
Name: "session",
Value: createSessionParams.Token,
Secure: true,
})
2024-08-22 14:58:43 +02:00
_, err = db.Queries.QuickUpdateSession(context.TODO(), queries.QuickUpdateSessionParams{
2024-08-21 17:31:03 +02:00
Token: createSessionParams.Token,
IpAddress: c.IP(),
Agent: string(c.Context().UserAgent()),
})
if err != nil {
return "", err
}
return createSessionParams.Token, nil
}
2024-08-21 17:54:36 +02:00
func GetSession(c *fiber.Ctx) (string, error) {
if c.Cookies("session") == "" {
return "", errors.New("no cookie found")
}
2024-08-22 14:58:43 +02:00
uid, err := db.Queries.QuickUpdateSession(context.TODO(), queries.QuickUpdateSessionParams{
2024-08-21 17:31:03 +02:00
Token: c.Cookies("session"),
IpAddress: c.IP(),
Agent: string(c.Context().UserAgent()),
})
if err != nil {
2024-08-21 17:54:36 +02:00
return uid, err
2024-08-21 17:31:03 +02:00
}
2024-08-21 17:54:36 +02:00
//session, err := db.Queries.GetSession(context.TODO(), c.Cookies("session"))
//if err != nil {
// return session, err
//}
return uid, nil
2024-08-21 17:31:03 +02:00
}