@@ -347,29 +347,42 @@ func GetUserByID(db *gorm.DB, id uint) (*models.User, error) {
347
347
return user , nil
348
348
}
349
349
350
- // id: 被查询用户的id
351
- // uid: 查询用户的id
352
- // ip: 查询用户的ip
353
- func GetProfile (db * gorm.DB , id uint , uid uint ) (models.ProfileResponse , error ) {
350
+ func GetProfile (db * gorm.DB , queriedUserID uint , queryingUserID uint ) (models.ProfileResponse , error ) {
354
351
if db == nil {
355
352
db = database .GetDB ()
356
353
}
357
- user , err := GetUserByID (db , id )
354
+
355
+ user , err := GetUserByID (db , queriedUserID )
358
356
if err != nil {
359
357
return models.ProfileResponse {}, err
360
358
}
359
+
360
+ displayInvitationCode := queryingUserID == queriedUserID
361
+ displayReward := queryingUserID == queriedUserID
362
+
363
+ // don't query if not logged in
364
+ if queryingUserID != 0 && queryingUserID != queriedUserID {
365
+ queryingUser , err := GetUserByID (db , queryingUserID )
366
+ if err != nil {
367
+ return models.ProfileResponse {}, err
368
+ }
369
+ if queryingUser .IsAdmin || queryingUser .IsCommunityAdmin {
370
+ displayReward = true
371
+ }
372
+ }
373
+
361
374
avatar := ""
362
375
if user .Avatar != "" {
363
376
avatar = fmt .Sprintf ("https://%s/%s/avatar/%s" , database .GetEndpoint (), database .MinioConf .Bucket , user .Avatar )
364
377
}
365
- if user .IsAnonymous && id != uid {
366
- return models.ProfileResponse {ID : id , NickName : user .NickName , Avatar : avatar , IsAnonymous : user .IsAnonymous , IsAdmin : user .IsAdmin , IsCommunityAdmin : user .IsCommunityAdmin }, nil
378
+ if user .IsAnonymous && queryingUserID != queriedUserID {
379
+ return models.ProfileResponse {ID : user . ID , NickName : user .NickName , Avatar : avatar , IsAnonymous : user .IsAnonymous , IsAdmin : user .IsAdmin , IsCommunityAdmin : user .IsCommunityAdmin }, nil
367
380
} else {
368
- r := models.ProfileResponse {ID : id , Email : user .Email , Year : user .Year , Grade : user .Grade , NickName : user .NickName , RealName : user .RealName , IsAnonymous : user .IsAnonymous , Avatar : avatar , IsAdmin : user .IsAdmin , IsCommunityAdmin : user .IsCommunityAdmin }
369
- if id == uid {
381
+ r := models.ProfileResponse {ID : user . ID , Email : user .Email , Year : user .Year , Grade : user .Grade , NickName : user .NickName , RealName : user .RealName , IsAnonymous : user .IsAnonymous , Avatar : avatar , IsAdmin : user .IsAdmin , IsCommunityAdmin : user .IsCommunityAdmin }
382
+ if displayInvitationCode {
370
383
r .InvitationCode = user .InvitationCode
371
384
}
372
- if id == uid || user . IsAdmin || user . IsCommunityAdmin {
385
+ if displayReward {
373
386
r .Reward = user .Reward
374
387
} else {
375
388
r .Reward = - 1
0 commit comments