Skip to content

Commit 8371168

Browse files
zeripathtechknowlogick
authored andcommitted
Return a UserList from /api/v1/admin/users (#6629)
1 parent 74fc636 commit 8371168

File tree

4 files changed

+50
-13
lines changed

4 files changed

+50
-13
lines changed

integrations/api_admin_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,26 @@ func TestAPISudoUserForbidden(t *testing.T) {
106106
req := NewRequest(t, "GET", urlStr)
107107
session.MakeRequest(t, req, http.StatusForbidden)
108108
}
109+
110+
func TestAPIListUsers(t *testing.T) {
111+
prepareTestEnv(t)
112+
adminUsername := "user1"
113+
session := loginUser(t, adminUsername)
114+
token := getTokenForLoggedInUser(t, session)
115+
116+
urlStr := fmt.Sprintf("/api/v1/admin/users?token=%s", token)
117+
req := NewRequest(t, "GET", urlStr)
118+
resp := session.MakeRequest(t, req, http.StatusOK)
119+
var users []api.User
120+
DecodeJSON(t, resp, &users)
121+
122+
found := false
123+
for _, user := range users {
124+
if user.UserName == adminUsername {
125+
found = true
126+
}
127+
}
128+
assert.True(t, found)
129+
numberOfUsers := models.GetCount(t, &models.User{}, "type = 0")
130+
assert.Equal(t, numberOfUsers, len(users))
131+
}

routers/api/v1/admin/user.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"code.gitea.io/gitea/modules/context"
1111
"code.gitea.io/gitea/modules/log"
1212
"code.gitea.io/gitea/modules/setting"
13+
"code.gitea.io/gitea/routers/api/v1/convert"
1314
"code.gitea.io/gitea/routers/api/v1/user"
1415
api "code.gitea.io/sdk/gitea"
1516
)
@@ -319,8 +320,14 @@ func GetAllUsers(ctx *context.APIContext) {
319320
PageSize: -1,
320321
})
321322
if err != nil {
322-
ctx.Error(500, "SearchUsers", err)
323+
ctx.Error(500, "GetAllUsers", err)
323324
return
324325
}
325-
ctx.JSON(200, &users)
326+
327+
results := make([]*api.User, len(users))
328+
for i := range users {
329+
results[i] = convert.ToUser(users[i], ctx.IsSigned, ctx.User.IsAdmin)
330+
}
331+
332+
ctx.JSON(200, &results)
326333
}

routers/api/v1/convert/convert.go

+16
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"code.gitea.io/gitea/models"
1111
"code.gitea.io/gitea/modules/git"
1212
"code.gitea.io/gitea/modules/log"
13+
"code.gitea.io/gitea/modules/markup"
1314
"code.gitea.io/gitea/modules/util"
1415
api "code.gitea.io/sdk/gitea"
1516

@@ -216,3 +217,18 @@ func ToTeam(team *models.Team) *api.Team {
216217
Units: team.GetUnitNames(),
217218
}
218219
}
220+
221+
// ToUser convert models.User to api.User
222+
func ToUser(user *models.User, signed, admin bool) *api.User {
223+
result := &api.User{
224+
ID: user.ID,
225+
UserName: user.Name,
226+
AvatarURL: user.AvatarLink(),
227+
FullName: markup.Sanitize(user.FullName),
228+
IsAdmin: user.IsAdmin,
229+
}
230+
if signed && (!user.KeepEmailPrivate || admin) {
231+
result.Email = user.Email
232+
}
233+
return result
234+
}

routers/api/v1/user/user.go

+2-11
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
"code.gitea.io/gitea/models"
1212
"code.gitea.io/gitea/modules/context"
13-
"code.gitea.io/gitea/modules/markup"
13+
"code.gitea.io/gitea/routers/api/v1/convert"
1414
api "code.gitea.io/sdk/gitea"
1515

1616
"github.com/Unknwon/com"
@@ -67,16 +67,7 @@ func Search(ctx *context.APIContext) {
6767

6868
results := make([]*api.User, len(users))
6969
for i := range users {
70-
results[i] = &api.User{
71-
ID: users[i].ID,
72-
UserName: users[i].Name,
73-
AvatarURL: users[i].AvatarLink(),
74-
FullName: markup.Sanitize(users[i].FullName),
75-
IsAdmin: users[i].IsAdmin,
76-
}
77-
if ctx.IsSigned && (!users[i].KeepEmailPrivate || ctx.User.IsAdmin) {
78-
results[i].Email = users[i].Email
79-
}
70+
results[i] = convert.ToUser(users[i], ctx.IsSigned, ctx.User.IsAdmin)
8071
}
8172

8273
ctx.JSON(200, map[string]interface{}{

0 commit comments

Comments
 (0)