Files
sonr/internal/ctx/session.go
T

34 lines
672 B
Go
Raw Normal View History

package ctx
2024-10-02 01:40:49 -04:00
import (
"github.com/labstack/echo/v4"
"github.com/segmentio/ksuid"
)
// GetSession returns the current Session
func GetSession(c echo.Context) *Session {
return c.(*Session)
}
// UseSession establishes a Session Cookie.
func UseSession(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
sc := initSession(c)
headers := new(RequestHeaders)
2024-10-02 01:40:49 -04:00
err := sc.Bind(headers)
if err != nil {
return err
}
return next(sc)
}
}
func initSession(c echo.Context) *Session {
s := &Session{Context: c}
if val := ReadCookie(c, "session"); val == "" {
id := ksuid.New().String()
WriteCookie(c, "session", id)
}
return s
}