Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add login name and source id for admin user searching API #23376

Merged
merged 11 commits into from
Mar 15, 2023
9 changes: 9 additions & 0 deletions models/user/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ type SearchUserOptions struct {
Keyword string
Type UserType
UID int64
LoginName string
SourceID int64
OrderBy db.SearchOrderBy
Visible []structs.VisibleType
Actor *User // The user doing the search
Expand Down Expand Up @@ -62,6 +64,13 @@ func (opts *SearchUserOptions) toSearchQueryBase() *xorm.Session {
cond = cond.And(builder.Eq{"id": opts.UID})
}

if opts.SourceID > 0 {
lunny marked this conversation as resolved.
Show resolved Hide resolved
cond = cond.And(builder.Eq{"login_source": opts.SourceID})
}
if opts.LoginName != "" {
cond = cond.And(builder.Eq{"login_name": opts.LoginName})
}

if !opts.IsActive.IsNone() {
cond = cond.And(builder.Eq{"is_active": opts.IsActive.IsTrue()})
}
Expand Down
21 changes: 16 additions & 5 deletions routers/api/v1/admin/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -417,14 +417,23 @@ func DeleteUserPublicKey(ctx *context.APIContext) {
ctx.Status(http.StatusNoContent)
}

// GetAllUsers API for getting information of all the users
func GetAllUsers(ctx *context.APIContext) {
// swagger:operation GET /admin/users admin adminGetAllUsers
// SearchUsers API for getting information of the users according the filter conditions
func SearchUsers(ctx *context.APIContext) {
// swagger:operation GET /admin/users admin adminSearchUsers
// ---
// summary: List all users
// summary: Search users according filter conditions
// produces:
// - application/json
// parameters:
// - name: source_id
// in: query
// description: ID of the user's login source to search for
// type: integer
// format: int64
// - name: login_name
// in: query
// description: user's login name to search for
// type: string
// - name: page
// in: query
// description: page number of results to return (1-based)
Expand All @@ -444,11 +453,13 @@ func GetAllUsers(ctx *context.APIContext) {
users, maxResults, err := user_model.SearchUsers(&user_model.SearchUserOptions{
Actor: ctx.Doer,
Type: user_model.UserTypeIndividual,
LoginName: ctx.FormTrim("login_name"),
SourceID: ctx.FormInt64("source_id"),
OrderBy: db.SearchOrderByAlphabetically,
ListOptions: listOptions,
})
if err != nil {
ctx.Error(http.StatusInternalServerError, "GetAllUsers", err)
ctx.Error(http.StatusInternalServerError, "SearchUsers", err)
return
}

Expand Down
2 changes: 1 addition & 1 deletion routers/api/v1/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ func Routes(ctx gocontext.Context) *web.Route {
})
m.Get("/orgs", admin.GetAllOrgs)
m.Group("/users", func() {
m.Get("", admin.GetAllUsers)
m.Get("", admin.SearchUsers)
m.Post("", bind(api.CreateUserOption{}), admin.CreateUser)
m.Group("/{username}", func() {
m.Combo("").Patch(bind(api.EditUserOption{}), admin.EditUser).
Expand Down
17 changes: 15 additions & 2 deletions templates/swagger/v1_json.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -488,9 +488,22 @@
"tags": [
"admin"
],
"summary": "List all users",
"operationId": "adminGetAllUsers",
"summary": "Search users according filter conditions",
"operationId": "adminSearchUsers",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "ID of the user's login source to search for",
"name": "source_id",
"in": "query"
},
{
"type": "string",
"description": "user's login name to search for",
"name": "login_name",
"in": "query"
},
{
"type": "integer",
"description": "page number of results to return (1-based)",
Expand Down