github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/web/middlewares/session.go (about) 1 package middlewares 2 3 import ( 4 "github.com/cozy/cozy-stack/model/session" 5 "github.com/labstack/echo/v4" 6 ) 7 8 const sessionKey = "session" 9 10 // LoadSession is a middlewares that loads the session and stores it the 11 // request context. 12 func LoadSession(next echo.HandlerFunc) echo.HandlerFunc { 13 return func(c echo.Context) error { 14 i, ok := GetInstanceSafe(c) 15 if ok { 16 sess, err := session.FromCookie(c, i) 17 if err == nil { 18 c.Set(sessionKey, sess) 19 } 20 } 21 return next(c) 22 } 23 } 24 25 // IsLoggedIn returns true if the context has a valid session cookie. 26 func IsLoggedIn(c echo.Context) bool { 27 _, ok := GetSession(c) 28 return ok 29 } 30 31 // GetSession returns the sessions associated with the given context. 32 func GetSession(c echo.Context) (sess *session.Session, ok bool) { 33 v := c.Get(sessionKey) 34 if v != nil { 35 sess, ok = v.(*session.Session) 36 } 37 return sess, ok 38 }