* Convert User expose ID each time (#12855) * git blame tells me a lot of gitea things happen here around 2018, add header * move user code int its own file * expose user id * adopt things from APIFormat * fix test * CI.restart() * No Refactor * CI.restart() Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>tags/v1.12.5
assert.EqualValues(t, 10, reviews[5].ID) | assert.EqualValues(t, 10, reviews[5].ID) | ||||
assert.EqualValues(t, "REQUEST_CHANGES", reviews[5].State) | assert.EqualValues(t, "REQUEST_CHANGES", reviews[5].State) | ||||
assert.EqualValues(t, 1, reviews[5].CodeCommentsCount) | assert.EqualValues(t, 1, reviews[5].CodeCommentsCount) | ||||
assert.EqualValues(t, 0, reviews[5].Reviewer.ID) // ghost user | |||||
assert.EqualValues(t, -1, reviews[5].Reviewer.ID) // ghost user | |||||
assert.EqualValues(t, false, reviews[5].Stale) | assert.EqualValues(t, false, reviews[5].Stale) | ||||
assert.EqualValues(t, true, reviews[5].Official) | assert.EqualValues(t, true, reviews[5].Official) | ||||
package integrations | package integrations | ||||
import ( | import ( | ||||
"fmt" | |||||
"net/http" | "net/http" | ||||
"testing" | "testing" | ||||
"code.gitea.io/gitea/models" | |||||
"code.gitea.io/gitea/modules/setting" | |||||
api "code.gitea.io/gitea/modules/structs" | api "code.gitea.io/gitea/modules/structs" | ||||
"github.com/stretchr/testify/assert" | "github.com/stretchr/testify/assert" | ||||
var results SearchResults | var results SearchResults | ||||
DecodeJSON(t, resp, &results) | DecodeJSON(t, resp, &results) | ||||
assert.NotEmpty(t, results.Data) | assert.NotEmpty(t, results.Data) | ||||
var modelUser *models.User | |||||
for _, user := range results.Data { | for _, user := range results.Data { | ||||
assert.Contains(t, user.UserName, query) | assert.Contains(t, user.UserName, query) | ||||
assert.Empty(t, user.Email) | |||||
modelUser = models.AssertExistsAndLoadBean(t, &models.User{ID: user.ID}).(*models.User) | |||||
if modelUser.KeepEmailPrivate { | |||||
assert.EqualValues(t, fmt.Sprintf("%s@%s", modelUser.LowerName, setting.Service.NoReplyAddress), user.Email) | |||||
} else { | |||||
assert.EqualValues(t, modelUser.Email, user.Email) | |||||
} | |||||
} | } | ||||
} | } |
// Copyright 2015 The Gogs Authors. All rights reserved. | // Copyright 2015 The Gogs Authors. All rights reserved. | ||||
// Copyright 2018 The Gitea Authors. All rights reserved. | |||||
// Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
// license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself | // 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 { | func ToUser(user *models.User, signed, authed bool) *api.User { | ||||
result := &api.User{ | result := &api.User{ | ||||
ID: user.ID, | |||||
UserName: user.Name, | UserName: user.Name, | ||||
AvatarURL: user.AvatarLink(), | |||||
FullName: markup.Sanitize(user.FullName), | FullName: markup.Sanitize(user.FullName), | ||||
Email: user.GetEmail(), | |||||
AvatarURL: user.AvatarLink(), | |||||
Created: user.CreatedUnix.AsTime(), | Created: user.CreatedUnix.AsTime(), | ||||
} | } | ||||
// hide primary email if API caller is anonymous or user keep email private | // hide primary email if API caller is anonymous or user keep email private | ||||
} | } | ||||
// only site admin will get these information and possibly user himself | // only site admin will get these information and possibly user himself | ||||
if authed { | if authed { | ||||
result.ID = user.ID | |||||
result.IsAdmin = user.IsAdmin | result.IsAdmin = user.IsAdmin | ||||
result.LastLogin = user.LastLoginUnix.AsTime() | result.LastLogin = user.LastLoginUnix.AsTime() | ||||
result.Language = user.Language | result.Language = user.Language |