From b97ae721793077c93a45bbb10af44ac8df25ddf2 Mon Sep 17 00:00:00 2001 From: DacongDA Date: Wed, 21 May 2025 18:54:42 +0800 Subject: [PATCH] feat: use the standard user struct for JWT-Standard to get a correct userinfo (#3809) --- object/token_jwt.go | 25 +++++++++++++++++++++++++ object/token_standard_jwt.go | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/object/token_jwt.go b/object/token_jwt.go index e8fcd36f..39dda2de 100644 --- a/object/token_jwt.go +++ b/object/token_jwt.go @@ -47,6 +47,17 @@ type UserShort struct { Phone string `xorm:"varchar(100) index" json:"phone"` } +type UserStandard struct { + Owner string `xorm:"varchar(100) notnull pk" json:"owner"` + Name string `xorm:"varchar(100) notnull pk" json:"preferred_username,omitempty"` + + Id string `xorm:"varchar(100) index" json:"id"` + DisplayName string `xorm:"varchar(100)" json:"name,omitempty"` + Avatar string `xorm:"varchar(500)" json:"picture,omitempty"` + Email string `xorm:"varchar(100) index" json:"email,omitempty"` + Phone string `xorm:"varchar(100) index" json:"phone,omitempty"` +} + type UserWithoutThirdIdp struct { Owner string `xorm:"varchar(100) notnull pk" json:"owner"` Name string `xorm:"varchar(100) notnull pk" json:"name"` @@ -179,6 +190,20 @@ func getShortUser(user *User) *UserShort { return res } +func getStandardUser(user *User) *UserStandard { + res := &UserStandard{ + Owner: user.Owner, + Name: user.Name, + + Id: user.Id, + DisplayName: user.DisplayName, + Avatar: user.Avatar, + Email: user.Email, + Phone: user.Phone, + } + return res +} + func getUserWithoutThirdIdp(user *User) *UserWithoutThirdIdp { res := &UserWithoutThirdIdp{ Owner: user.Owner, diff --git a/object/token_standard_jwt.go b/object/token_standard_jwt.go index 4f470ba9..73b92f03 100644 --- a/object/token_standard_jwt.go +++ b/object/token_standard_jwt.go @@ -23,7 +23,7 @@ import ( ) type ClaimsStandard struct { - *UserShort + *UserStandard EmailVerified bool `json:"email_verified,omitempty"` PhoneNumber string `json:"phone_number,omitempty"` PhoneNumberVerified bool `json:"phone_number_verified,omitempty"` @@ -48,7 +48,7 @@ func getStreetAddress(user *User) string { func getStandardClaims(claims Claims) ClaimsStandard { res := ClaimsStandard{ - UserShort: getShortUser(claims.User), + UserStandard: getStandardUser(claims.User), EmailVerified: claims.User.EmailVerified, TokenType: claims.TokenType, Nonce: claims.Nonce,