diff options
Diffstat (limited to 'web/session/session.go')
| -rw-r--r-- | web/session/session.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/web/session/session.go b/web/session/session.go new file mode 100644 index 00000000..2dfe94b6 --- /dev/null +++ b/web/session/session.go @@ -0,0 +1,46 @@ +package session + +import ( + "encoding/gob" + "github.com/gin-contrib/sessions" + "github.com/gin-gonic/gin" + "x-ui/database/model" +) + +const ( + loginUser = "LOGIN_USER" +) + +func init() { + gob.Register(model.User{}) +} + +func SetLoginUser(c *gin.Context, user *model.User) error { + s := sessions.Default(c) + s.Set(loginUser, user) + return s.Save() +} + +func GetLoginUser(c *gin.Context) *model.User { + s := sessions.Default(c) + obj := s.Get(loginUser) + if obj == nil { + return nil + } + user := obj.(model.User) + return &user +} + +func IsLogin(c *gin.Context) bool { + return GetLoginUser(c) != nil +} + +func ClearSession(c *gin.Context) { + s := sessions.Default(c) + s.Clear() + s.Options(sessions.Options{ + Path: "/", + MaxAge: -1, + }) + s.Save() +} |
