diff options
author | renothing <261274+renothing@users.noreply.github.com> | 2019-07-27 21:15:30 +0800 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2019-07-27 16:15:30 +0300 |
commit | cbf231a67595feb36fccb68dc00b2bc7607fa882 (patch) | |
tree | 9f200fb9c89dc79a2f6a6472901668753a742aa3 /routers/api/v1/convert/convert.go | |
parent | 700cd346fad3a0bed203bfb032f7b4bc9d1f2551 (diff) | |
download | gitea-cbf231a67595feb36fccb68dc00b2bc7607fa882.tar.gz gitea-cbf231a67595feb36fccb68dc00b2bc7607fa882.zip |
fix wrong email when use gitea as OAuth2 provider (#7640)
when you use gitea as OAuth2 provider, the /api/v1/user should return
user primary email as identifier, which is unique in OAuth2 clients.
this patch use convert.ToUser replace all u.APIFormat in api requests,
return primary email when caller is yourself or admin.
Diffstat (limited to 'routers/api/v1/convert/convert.go')
-rw-r--r-- | routers/api/v1/convert/convert.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index f1cb23de43..d2691f8238 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -229,7 +229,7 @@ func ToTeam(team *models.Team) *api.Team { } // ToUser convert models.User to api.User -func ToUser(user *models.User, signed, admin bool) *api.User { +func ToUser(user *models.User, signed, authed bool) *api.User { result := &api.User{ ID: user.ID, UserName: user.Name, @@ -239,7 +239,12 @@ func ToUser(user *models.User, signed, admin bool) *api.User { LastLogin: user.LastLoginUnix.AsTime(), Created: user.CreatedUnix.AsTime(), } - if signed && (!user.KeepEmailPrivate || admin) { + // hide primary email if API caller isn't user itself or an admin + if !signed { + result.Email = "" + } else if user.KeepEmailPrivate && !authed { + result.Email = user.GetEmail() + } else { result.Email = user.Email } return result |