diff options
Diffstat (limited to 'pkg/utils/user.go')
-rw-r--r-- | pkg/utils/user.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/pkg/utils/user.go b/pkg/utils/user.go new file mode 100644 index 0000000..4006b3c --- /dev/null +++ b/pkg/utils/user.go @@ -0,0 +1,41 @@ +package utils + +import ( + "context" + + "github.com/gorilla/sessions" + "github.com/labstack/echo-contrib/session" + "github.com/labstack/echo/v4" + "go.neonxp.ru/framework/pkg/middleware" + "go.neonxp.ru/framework/pkg/model" +) + +func GetUserCtx(ctx context.Context) *model.User { + u := ctx.Value(middleware.ContextKey("user")) + if u == nil { + return nil + } + + if u, ok := u.(model.User); ok { + return &u + } + + return nil +} + +func SetUser(c echo.Context, u *model.User, maxage int) error { + sess, err := session.Get("user", c) + if err != nil { + return err + } + + sess.Values["user"] = u + sess.Options = &sessions.Options{ + Path: "/", + MaxAge: maxage, + HttpOnly: true, + Secure: true, + } + + return sess.Save(c.Request(), c.Response()) +} |