session.go 900 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 (
  9. loginUser = "LOGIN_USER"
  10. )
  11. func init() {
  12. gob.Register(model.User{})
  13. }
  14. func SetLoginUser(c *gin.Context, user *model.User) error {
  15. s := sessions.Default(c)
  16. s.Set(loginUser, user)
  17. return s.Save()
  18. }
  19. func SetMaxAge(c *gin.Context, maxAge int) error {
  20. s := sessions.Default(c)
  21. s.Options(sessions.Options{
  22. Path: "/",
  23. MaxAge: maxAge,
  24. })
  25. return s.Save()
  26. }
  27. func GetLoginUser(c *gin.Context) *model.User {
  28. s := sessions.Default(c)
  29. obj := s.Get(loginUser)
  30. if obj == nil {
  31. return nil
  32. }
  33. user := obj.(model.User)
  34. return &user
  35. }
  36. func IsLogin(c *gin.Context) bool {
  37. return GetLoginUser(c) != nil
  38. }
  39. func ClearSession(c *gin.Context) {
  40. s := sessions.Default(c)
  41. s.Clear()
  42. s.Options(sessions.Options{
  43. Path: "/",
  44. MaxAge: -1,
  45. })
  46. s.Save()
  47. }