session.go 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package desktop
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "nginx-ui/server/models"
  7. "os"
  8. )
  9. type Session struct {
  10. ctx context.Context
  11. //缓存当前的用户信息
  12. user *models.User
  13. }
  14. func (s *Session) SetUser(user *models.User) {
  15. s.user = user
  16. j, err := json.Marshal(user)
  17. if err != nil {
  18. fmt.Println("json fail", err)
  19. return
  20. }
  21. err = os.MkdirAll("./data/sessions", 0666)
  22. if err != nil {
  23. fmt.Printf("mkdir dir fail: %s\n\n", err)
  24. return
  25. }
  26. err = os.WriteFile("./data/sessions/local", j, 0666)
  27. if err != nil {
  28. fmt.Println("save session fail", err)
  29. } else {
  30. fmt.Printf("save session ok: %s\n", user.Account)
  31. }
  32. }
  33. func (s *Session) Load() {
  34. by, err := os.ReadFile("./data/sessions/local")
  35. if err != nil {
  36. fmt.Printf("session read fail: %s\n", err)
  37. return
  38. }
  39. var user *models.User
  40. err = json.Unmarshal(by, &user)
  41. if err != nil {
  42. fmt.Printf("session read fail: %s\n", err)
  43. return
  44. }
  45. s.user = user
  46. fmt.Printf("session load: %s\n", user.Account)
  47. }