mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-03 18:01:39 +00:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package session
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/labstack/echo/v4"
|
||
|
|
|
||
|
|
"github.com/onsonr/sonr/pkg/common"
|
||
|
|
"github.com/onsonr/sonr/pkg/gateway/config"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Middleware establishes a Session Cookie.
|
||
|
|
func Middleware(env config.Env) echo.MiddlewareFunc {
|
||
|
|
return func(next echo.HandlerFunc) echo.HandlerFunc {
|
||
|
|
return func(c echo.Context) error {
|
||
|
|
cc := injectSession(c, common.RoleHway)
|
||
|
|
return next(cc)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// injectSession returns the session injectSession from the cookies.
|
||
|
|
func injectSession(c echo.Context, role common.PeerRole) *HTTPContext {
|
||
|
|
if c == nil {
|
||
|
|
return initHTTPContext(nil)
|
||
|
|
}
|
||
|
|
|
||
|
|
common.WriteCookie(c, common.SessionRole, role.String())
|
||
|
|
|
||
|
|
// Continue even if there are errors, just ensure we have valid session data
|
||
|
|
if err := loadOrGenKsuid(c); err != nil {
|
||
|
|
// Log error but continue
|
||
|
|
}
|
||
|
|
|
||
|
|
return initHTTPContext(c)
|
||
|
|
}
|
||
|
|
|
||
|
|
// HasAuthorization checks if the request has an authorization header
|
||
|
|
func HasAuthorization(c echo.Context) bool {
|
||
|
|
return common.HeaderExists(c, common.Authorization)
|
||
|
|
}
|
||
|
|
|
||
|
|
// HasUserHandle checks if the request has a user handle cookie
|
||
|
|
func HasUserHandle(c echo.Context) bool {
|
||
|
|
return common.CookieExists(c, common.UserHandle)
|
||
|
|
}
|
||
|
|
|
||
|
|
// HasVaultAddress checks if the request has a vault address cookie
|
||
|
|
func HasVaultAddress(c echo.Context) bool {
|
||
|
|
return common.CookieExists(c, common.SonrAddress)
|
||
|
|
}
|