Sushi/session/middleware.go

29 lines
657 B
Go

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