2020-09-18 00:33:23 +03:00
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package convert
import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/markup"
api "code.gitea.io/gitea/modules/structs"
)
// ToUser convert models.User to api.User
2021-03-27 19:45:26 +03:00
// if doer is set, private information is added if the doer has the permission to see it
func ToUser ( user , doer * models . User ) * api . User {
if user == nil {
return nil
}
authed := false
signed := false
if doer != nil {
signed = true
authed = doer . ID == user . ID || doer . IsAdmin
}
return toUser ( user , signed , authed )
}
// ToUserWithAccessMode convert models.User to api.User
// AccessMode is not none show add some more information
func ToUserWithAccessMode ( user * models . User , accessMode models . AccessMode ) * api . User {
2020-10-17 07:23:08 +03:00
if user == nil {
return nil
}
2021-03-27 19:45:26 +03:00
return toUser ( user , accessMode != models . AccessModeNone , false )
}
// toUser convert models.User to api.User
// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
func toUser ( user * models . User , signed , authed bool ) * api . User {
2020-09-18 00:33:23 +03:00
result := & api . User {
2021-02-18 11:25:35 +03:00
ID : user . ID ,
UserName : user . Name ,
FullName : markup . Sanitize ( user . FullName ) ,
Email : user . GetEmail ( ) ,
AvatarURL : user . AvatarLink ( ) ,
Created : user . CreatedUnix . AsTime ( ) ,
Restricted : user . IsRestricted ,
2020-09-18 00:33:23 +03:00
}
// hide primary email if API caller is anonymous or user keep email private
if signed && ( ! user . KeepEmailPrivate || authed ) {
result . Email = user . Email
}
// only site admin will get these information and possibly user himself
if authed {
result . IsAdmin = user . IsAdmin
result . LastLogin = user . LastLoginUnix . AsTime ( )
result . Language = user . Language
}
return result
}