Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMHSanaei <mc.sanaei@gmail.com>2023-02-09 22:18:06 +0300
committerMHSanaei <mc.sanaei@gmail.com>2023-02-09 22:18:06 +0300
commitb73e4173a3c1e69e02ad6b4e3b43e425e57a5be9 (patch)
treed95d2f5e903d97082e11eb9f9023c165b1bde388 /web/session
3x-ui
Diffstat (limited to 'web/session')
-rw-r--r--web/session/session.go46
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()
+}