29 lines
657 B
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()
|
|
}
|
|
}
|