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) } } }