user.go 919 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package json
  2. import (
  3. "encoding/json"
  4. "github.com/v2ray/v2ray-core/common/uuid"
  5. "github.com/v2ray/v2ray-core/proxy/vmess"
  6. )
  7. // ConfigUser is an user account in VMess configuration.
  8. type ConfigUser struct {
  9. Id *vmess.ID
  10. Email string
  11. LevelValue vmess.UserLevel
  12. }
  13. func (u *ConfigUser) UnmarshalJSON(data []byte) error {
  14. type rawUser struct {
  15. IdString string `json:"id"`
  16. EmailString string `json:"email"`
  17. LevelInt int `json:"level"`
  18. }
  19. var rawUserValue rawUser
  20. if err := json.Unmarshal(data, &rawUserValue); err != nil {
  21. return err
  22. }
  23. id, err := uuid.ParseString(rawUserValue.IdString)
  24. if err != nil {
  25. return err
  26. }
  27. u.Id = vmess.NewID(id)
  28. u.Email = rawUserValue.EmailString
  29. u.LevelValue = vmess.UserLevel(rawUserValue.LevelInt)
  30. return nil
  31. }
  32. func (u *ConfigUser) ID() *vmess.ID {
  33. return u.Id
  34. }
  35. func (this *ConfigUser) Level() vmess.UserLevel {
  36. return this.LevelValue
  37. }