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  }