mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-10 21:09:11 +00:00
- **feat(macaroon): add and to macaroon genesis** - **refactor: move schema definitions to dedicated file** - **feat: remove Session model** - **refactor: move session middleware to internal package**
36 lines
728 B
Go
36 lines
728 B
Go
package session
|
|
|
|
import (
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/segmentio/ksuid"
|
|
|
|
"github.com/onsonr/sonr/internal/headers"
|
|
)
|
|
|
|
// 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(headers.RequestHeaders)
|
|
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
|
|
}
|