mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-25 11:16:11 +01:00
Add login name and source id for admin user searching API (#23376)
As title. --------- Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
27494ed20d
commit
6f9cc617fc
|
@ -22,6 +22,8 @@ type SearchUserOptions struct {
|
||||||
Keyword string
|
Keyword string
|
||||||
Type UserType
|
Type UserType
|
||||||
UID int64
|
UID int64
|
||||||
|
LoginName string // this option should be used only for admin user
|
||||||
|
SourceID int64 // this option should be used only for admin user
|
||||||
OrderBy db.SearchOrderBy
|
OrderBy db.SearchOrderBy
|
||||||
Visible []structs.VisibleType
|
Visible []structs.VisibleType
|
||||||
Actor *User // The user doing the search
|
Actor *User // The user doing the search
|
||||||
|
@ -62,6 +64,13 @@ func (opts *SearchUserOptions) toSearchQueryBase() *xorm.Session {
|
||||||
cond = cond.And(builder.Eq{"id": opts.UID})
|
cond = cond.And(builder.Eq{"id": opts.UID})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.SourceID > 0 {
|
||||||
|
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() {
|
if !opts.IsActive.IsNone() {
|
||||||
cond = cond.And(builder.Eq{"is_active": opts.IsActive.IsTrue()})
|
cond = cond.And(builder.Eq{"is_active": opts.IsActive.IsTrue()})
|
||||||
}
|
}
|
||||||
|
|
|
@ -417,14 +417,23 @@ func DeleteUserPublicKey(ctx *context.APIContext) {
|
||||||
ctx.Status(http.StatusNoContent)
|
ctx.Status(http.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAllUsers API for getting information of all the users
|
// SearchUsers API for getting information of the users according the filter conditions
|
||||||
func GetAllUsers(ctx *context.APIContext) {
|
func SearchUsers(ctx *context.APIContext) {
|
||||||
// swagger:operation GET /admin/users admin adminGetAllUsers
|
// swagger:operation GET /admin/users admin adminSearchUsers
|
||||||
// ---
|
// ---
|
||||||
// summary: List all users
|
// summary: Search users according filter conditions
|
||||||
// produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
// parameters:
|
// 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
|
// - name: page
|
||||||
// in: query
|
// in: query
|
||||||
// description: page number of results to return (1-based)
|
// description: page number of results to return (1-based)
|
||||||
|
@ -444,11 +453,13 @@ func GetAllUsers(ctx *context.APIContext) {
|
||||||
users, maxResults, err := user_model.SearchUsers(&user_model.SearchUserOptions{
|
users, maxResults, err := user_model.SearchUsers(&user_model.SearchUserOptions{
|
||||||
Actor: ctx.Doer,
|
Actor: ctx.Doer,
|
||||||
Type: user_model.UserTypeIndividual,
|
Type: user_model.UserTypeIndividual,
|
||||||
|
LoginName: ctx.FormTrim("login_name"),
|
||||||
|
SourceID: ctx.FormInt64("source_id"),
|
||||||
OrderBy: db.SearchOrderByAlphabetically,
|
OrderBy: db.SearchOrderByAlphabetically,
|
||||||
ListOptions: listOptions,
|
ListOptions: listOptions,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "GetAllUsers", err)
|
ctx.Error(http.StatusInternalServerError, "SearchUsers", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1245,7 +1245,7 @@ func Routes(ctx gocontext.Context) *web.Route {
|
||||||
})
|
})
|
||||||
m.Get("/orgs", admin.GetAllOrgs)
|
m.Get("/orgs", admin.GetAllOrgs)
|
||||||
m.Group("/users", func() {
|
m.Group("/users", func() {
|
||||||
m.Get("", admin.GetAllUsers)
|
m.Get("", admin.SearchUsers)
|
||||||
m.Post("", bind(api.CreateUserOption{}), admin.CreateUser)
|
m.Post("", bind(api.CreateUserOption{}), admin.CreateUser)
|
||||||
m.Group("/{username}", func() {
|
m.Group("/{username}", func() {
|
||||||
m.Combo("").Patch(bind(api.EditUserOption{}), admin.EditUser).
|
m.Combo("").Patch(bind(api.EditUserOption{}), admin.EditUser).
|
||||||
|
|
|
@ -488,9 +488,22 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"admin"
|
"admin"
|
||||||
],
|
],
|
||||||
"summary": "List all users",
|
"summary": "Search users according filter conditions",
|
||||||
"operationId": "adminGetAllUsers",
|
"operationId": "adminSearchUsers",
|
||||||
"parameters": [
|
"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",
|
"type": "integer",
|
||||||
"description": "page number of results to return (1-based)",
|
"description": "page number of results to return (1-based)",
|
||||||
|
|
Loading…
Reference in a new issue