@@ -145,7 +145,39 @@ func (as *AuthService) RemoveTokensExceptCurrentUser(ctx context.Context, userID
145145// Admin
146146
147147func (as * AuthService ) GetAdminUserCacheInfo (ctx context.Context , accessToken string ) (userInfo * entity.UserCacheInfo , err error ) {
148- return as .authRepo .GetAdminUserCacheInfo (ctx , accessToken )
148+ adminCacheInfo , err := as .authRepo .GetAdminUserCacheInfo (ctx , accessToken )
149+ if err != nil {
150+ return nil , err
151+ }
152+ if adminCacheInfo == nil {
153+ return nil , nil
154+ }
155+
156+ // Keep admin authorization aligned with user-token lifecycle and status refresh.
157+ refreshedUserCacheInfo , err := as .GetUserCacheInfo (ctx , accessToken )
158+ if err != nil {
159+ return nil , err
160+ }
161+ if refreshedUserCacheInfo == nil {
162+ if err = as .authRepo .RemoveAdminUserCacheInfo (ctx , accessToken ); err != nil {
163+ return nil , err
164+ }
165+ return nil , nil
166+ }
167+
168+ adminCacheInfo .UserStatus = refreshedUserCacheInfo .UserStatus
169+ adminCacheInfo .EmailStatus = refreshedUserCacheInfo .EmailStatus
170+ if refreshedUserCacheInfo .RoleID > 0 {
171+ adminCacheInfo .RoleID = refreshedUserCacheInfo .RoleID
172+ }
173+ if len (refreshedUserCacheInfo .ExternalID ) > 0 {
174+ adminCacheInfo .ExternalID = refreshedUserCacheInfo .ExternalID
175+ }
176+
177+ if err = as .authRepo .SetAdminUserCacheInfo (ctx , accessToken , adminCacheInfo ); err != nil {
178+ return nil , err
179+ }
180+ return adminCacheInfo , nil
149181}
150182
151183func (as * AuthService ) SetAdminUserCacheInfo (ctx context.Context , accessToken string , userInfo * entity.UserCacheInfo ) (err error ) {
0 commit comments