Sushi/session/middleware.go
2025-08-15 14:23:09 -05:00

31 lines
694 B
Go

package session
import sushi "git.sharkk.net/Sharkk/Sushi"
// Middleware provides session handling
func Middleware() sushi.Middleware {
return func(next sushi.Handler) sushi.Handler {
return func(ctx sushi.Ctx, params []string) {
sessionID := sushi.GetCookie(ctx, SessionCookieName)
var sess *Session
if sessionID != "" {
if existingSess, exists := GetSession(sessionID); exists {
sess = existingSess
sess.Touch()
StoreSession(sess)
SetSessionCookie(ctx, sessionID)
}
}
if sess == nil {
sess = CreateSession(0) // Guest session
SetSessionCookie(ctx, sess.ID)
}
ctx.SetUserValue(SessionCtxKey, sess)
next(ctx, params)
}
}
}