tijl.dev-core/internal/sessions/sessions.go
tijl 3732fb2fa4
Some checks failed
build / build (push) Failing after 0s
database + auth
2024-08-21 17:31:03 +02:00

54 lines
1.3 KiB
Go

package sessions
import (
"context"
"git.tijl.dev/tijl/tijl.dev/internal/db"
"git.tijl.dev/tijl/tijl.dev/internal/utils"
"git.tijl.dev/tijl/tijl.dev/modules/database"
"github.com/gofiber/fiber/v2"
)
func NewSession(uid string, c *fiber.Ctx) (string, error) {
createSessionParams := database.CreateSessionParams{
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,
})
err = db.Queries.QuickUpdateSession(context.TODO(), database.QuickUpdateSessionParams{
Token: createSessionParams.Token,
IpAddress: c.IP(),
Agent: string(c.Context().UserAgent()),
})
if err != nil {
return "", err
}
return createSessionParams.Token, nil
}
func GetSession(c *fiber.Ctx) (database.Session, error) {
err := db.Queries.QuickUpdateSession(context.TODO(), database.QuickUpdateSessionParams{
Token: c.Cookies("session"),
IpAddress: c.IP(),
Agent: string(c.Context().UserAgent()),
})
if err != nil {
return database.Session{}, err
}
session, err := db.Queries.GetSession(context.TODO(), c.Cookies("session"))
if err != nil {
return session, err
}
return session, nil
}