session.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package session
  2. import (
  3. "encoding/gob"
  4. "x-ui/database/model"
  5. "github.com/gin-contrib/sessions"
  6. "github.com/gin-gonic/gin"
  7. )
  8. const loginUser = "LOGIN_USER"
  9. func init() {
  10. gob.Register(model.User{})
  11. }
  12. func SetLoginUser(c *gin.Context, user *model.User) error {
  13. s := sessions.Default(c)
  14. s.Set(loginUser, user)
  15. return s.Save()
  16. }
  17. func SetMaxAge(c *gin.Context, maxAge int) error {
  18. s := sessions.Default(c)
  19. s.Options(sessions.Options{
  20. Path: "/",
  21. MaxAge: maxAge,
  22. })
  23. return s.Save()
  24. }
  25. func GetLoginUser(c *gin.Context) *model.User {
  26. s := sessions.Default(c)
  27. if obj := s.Get(loginUser); obj != nil {
  28. if user, ok := obj.(model.User); ok {
  29. return &user
  30. }
  31. }
  32. return nil
  33. }
  34. func IsLogin(c *gin.Context) bool {
  35. return GetLoginUser(c) != nil
  36. }
  37. func ClearSession(c *gin.Context) error {
  38. s := sessions.Default(c)
  39. s.Clear()
  40. s.Options(sessions.Options{
  41. Path: "/",
  42. MaxAge: -1,
  43. })
  44. if err := s.Save(); err != nil {
  45. return err
  46. }
  47. c.SetCookie("3x-ui", "", -1, "/", "", false, true)
  48. return nil
  49. }