diff options
author | Alexander Neonxp Kiryukhin <i@neonxp.ru> | 2024-10-12 02:52:22 +0300 |
---|---|---|
committer | Alexander Neonxp Kiryukhin <i@neonxp.ru> | 2024-10-12 02:53:52 +0300 |
commit | d05ea66f4bbcf0cc5c8908f3435c68de1b070fa1 (patch) | |
tree | 7c7a769206646f2b81a0eda0680f0be5033a4197 /pkg/utils/user.go |
Начальная версияv0.0.1
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()) +} |