mirror of
https://github.com/grafana/grafana.git
synced 2024-11-23 01:16:31 -06:00
Chore: use Wrap for all admin API (#26673)
* Chore: use Wrap for all admin API * API: fix admin tests
This commit is contained in:
parent
ec76d69b49
commit
7a5464fe10
@ -9,7 +9,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
func AdminGetSettings(c *models.ReqContext) {
|
||||
func AdminGetSettings(c *models.ReqContext) Response {
|
||||
settings := make(map[string]interface{})
|
||||
|
||||
for _, section := range setting.Raw.Sections() {
|
||||
@ -35,16 +35,15 @@ func AdminGetSettings(c *models.ReqContext) {
|
||||
}
|
||||
}
|
||||
|
||||
c.JSON(200, settings)
|
||||
return JSON(200, settings)
|
||||
}
|
||||
|
||||
func AdminGetStats(c *models.ReqContext) {
|
||||
func AdminGetStats(c *models.ReqContext) Response {
|
||||
statsQuery := models.GetAdminStatsQuery{}
|
||||
|
||||
if err := bus.Dispatch(&statsQuery); err != nil {
|
||||
c.JsonApiErr(500, "Failed to get admin stats from database", err)
|
||||
return
|
||||
return Error(500, "Failed to get admin stats from database", err)
|
||||
}
|
||||
|
||||
c.JSON(200, statsQuery.Result)
|
||||
return JSON(200, statsQuery.Result)
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
func AdminCreateUser(c *models.ReqContext, form dtos.AdminCreateUserForm) {
|
||||
func AdminCreateUser(c *models.ReqContext, form dtos.AdminCreateUserForm) Response {
|
||||
cmd := models.CreateUserCommand{
|
||||
Login: form.Login,
|
||||
Email: form.Email,
|
||||
@ -20,24 +20,20 @@ func AdminCreateUser(c *models.ReqContext, form dtos.AdminCreateUserForm) {
|
||||
if len(cmd.Login) == 0 {
|
||||
cmd.Login = cmd.Email
|
||||
if len(cmd.Login) == 0 {
|
||||
c.JsonApiErr(400, "Validation error, need specify either username or email", nil)
|
||||
return
|
||||
return Error(400, "Validation error, need specify either username or email", nil)
|
||||
}
|
||||
}
|
||||
|
||||
if len(cmd.Password) < 4 {
|
||||
c.JsonApiErr(400, "Password is missing or too short", nil)
|
||||
return
|
||||
return Error(400, "Password is missing or too short", nil)
|
||||
}
|
||||
|
||||
if err := bus.Dispatch(&cmd); err != nil {
|
||||
if err == models.ErrOrgNotFound {
|
||||
c.JsonApiErr(400, models.ErrOrgNotFound.Error(), nil)
|
||||
return
|
||||
return Error(400, models.ErrOrgNotFound.Error(), nil)
|
||||
}
|
||||
|
||||
c.JsonApiErr(500, "failed to create user", err)
|
||||
return
|
||||
return Error(500, "failed to create user", err)
|
||||
}
|
||||
|
||||
metrics.MApiAdminUserCreate.Inc()
|
||||
@ -49,28 +45,25 @@ func AdminCreateUser(c *models.ReqContext, form dtos.AdminCreateUserForm) {
|
||||
Id: user.Id,
|
||||
}
|
||||
|
||||
c.JSON(200, result)
|
||||
return JSON(200, result)
|
||||
}
|
||||
|
||||
func AdminUpdateUserPassword(c *models.ReqContext, form dtos.AdminUpdateUserPasswordForm) {
|
||||
func AdminUpdateUserPassword(c *models.ReqContext, form dtos.AdminUpdateUserPasswordForm) Response {
|
||||
userID := c.ParamsInt64(":id")
|
||||
|
||||
if len(form.Password) < 4 {
|
||||
c.JsonApiErr(400, "New password too short", nil)
|
||||
return
|
||||
return Error(400, "New password too short", nil)
|
||||
}
|
||||
|
||||
userQuery := models.GetUserByIdQuery{Id: userID}
|
||||
|
||||
if err := bus.Dispatch(&userQuery); err != nil {
|
||||
c.JsonApiErr(500, "Could not read user from database", err)
|
||||
return
|
||||
return Error(500, "Could not read user from database", err)
|
||||
}
|
||||
|
||||
passwordHashed, err := util.EncodePassword(form.Password, userQuery.Result.Salt)
|
||||
if err != nil {
|
||||
c.JsonApiErr(500, "Could not encode password", err)
|
||||
return
|
||||
return Error(500, "Could not encode password", err)
|
||||
}
|
||||
|
||||
cmd := models.ChangeUserPasswordCommand{
|
||||
@ -79,15 +72,14 @@ func AdminUpdateUserPassword(c *models.ReqContext, form dtos.AdminUpdateUserPass
|
||||
}
|
||||
|
||||
if err := bus.Dispatch(&cmd); err != nil {
|
||||
c.JsonApiErr(500, "Failed to update user password", err)
|
||||
return
|
||||
return Error(500, "Failed to update user password", err)
|
||||
}
|
||||
|
||||
c.JsonOK("User password updated")
|
||||
return Success("User password updated")
|
||||
}
|
||||
|
||||
// PUT /api/admin/users/:id/permissions
|
||||
func AdminUpdateUserPermissions(c *models.ReqContext, form dtos.AdminUpdateUserPermissionsForm) {
|
||||
func AdminUpdateUserPermissions(c *models.ReqContext, form dtos.AdminUpdateUserPermissionsForm) Response {
|
||||
userID := c.ParamsInt64(":id")
|
||||
|
||||
cmd := models.UpdateUserPermissionsCommand{
|
||||
@ -97,32 +89,28 @@ func AdminUpdateUserPermissions(c *models.ReqContext, form dtos.AdminUpdateUserP
|
||||
|
||||
if err := bus.Dispatch(&cmd); err != nil {
|
||||
if err == models.ErrLastGrafanaAdmin {
|
||||
c.JsonApiErr(400, models.ErrLastGrafanaAdmin.Error(), nil)
|
||||
return
|
||||
return Error(400, models.ErrLastGrafanaAdmin.Error(), nil)
|
||||
}
|
||||
|
||||
c.JsonApiErr(500, "Failed to update user permissions", err)
|
||||
return
|
||||
return Error(500, "Failed to update user permissions", err)
|
||||
}
|
||||
|
||||
c.JsonOK("User permissions updated")
|
||||
return Success("User permissions updated")
|
||||
}
|
||||
|
||||
func AdminDeleteUser(c *models.ReqContext) {
|
||||
func AdminDeleteUser(c *models.ReqContext) Response {
|
||||
userID := c.ParamsInt64(":id")
|
||||
|
||||
cmd := models.DeleteUserCommand{UserId: userID}
|
||||
|
||||
if err := bus.Dispatch(&cmd); err != nil {
|
||||
if err == models.ErrUserNotFound {
|
||||
c.JsonApiErr(404, models.ErrUserNotFound.Error(), nil)
|
||||
return
|
||||
return Error(404, models.ErrUserNotFound.Error(), nil)
|
||||
}
|
||||
c.JsonApiErr(500, "Failed to delete user", err)
|
||||
return
|
||||
return Error(500, "Failed to delete user", err)
|
||||
}
|
||||
|
||||
c.JsonOK("User deleted")
|
||||
return Success("User deleted")
|
||||
}
|
||||
|
||||
// POST /api/admin/users/:id/disable
|
||||
|
@ -266,13 +266,13 @@ func putAdminScenario(desc string, url string, routePattern string, role models.
|
||||
defer bus.ClearBusHandlers()
|
||||
|
||||
sc := setupScenarioContext(url)
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) {
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) Response {
|
||||
sc.context = c
|
||||
sc.context.UserId = TestUserID
|
||||
sc.context.OrgId = TestOrgID
|
||||
sc.context.OrgRole = role
|
||||
|
||||
AdminUpdateUserPermissions(c, cmd)
|
||||
return AdminUpdateUserPermissions(c, cmd)
|
||||
})
|
||||
|
||||
sc.m.Put(routePattern, sc.defaultHandler)
|
||||
@ -396,11 +396,11 @@ func adminDeleteUserScenario(desc string, url string, routePattern string, fn sc
|
||||
defer bus.ClearBusHandlers()
|
||||
|
||||
sc := setupScenarioContext(url)
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) {
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) Response {
|
||||
sc.context = c
|
||||
sc.context.UserId = TestUserID
|
||||
|
||||
AdminDeleteUser(c)
|
||||
return AdminDeleteUser(c)
|
||||
})
|
||||
|
||||
sc.m.Delete(routePattern, sc.defaultHandler)
|
||||
@ -414,11 +414,11 @@ func adminCreateUserScenario(desc string, url string, routePattern string, cmd d
|
||||
defer bus.ClearBusHandlers()
|
||||
|
||||
sc := setupScenarioContext(url)
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) {
|
||||
sc.defaultHandler = Wrap(func(c *models.ReqContext) Response {
|
||||
sc.context = c
|
||||
sc.context.UserId = TestUserID
|
||||
|
||||
AdminCreateUser(c, cmd)
|
||||
return AdminCreateUser(c, cmd)
|
||||
})
|
||||
|
||||
sc.m.Post(routePattern, sc.defaultHandler)
|
||||
|
@ -387,16 +387,16 @@ func (hs *HTTPServer) registerRoutes() {
|
||||
|
||||
// admin api
|
||||
r.Group("/api/admin", func(adminRoute routing.RouteRegister) {
|
||||
adminRoute.Get("/settings", AdminGetSettings)
|
||||
adminRoute.Post("/users", bind(dtos.AdminCreateUserForm{}), AdminCreateUser)
|
||||
adminRoute.Put("/users/:id/password", bind(dtos.AdminUpdateUserPasswordForm{}), AdminUpdateUserPassword)
|
||||
adminRoute.Put("/users/:id/permissions", bind(dtos.AdminUpdateUserPermissionsForm{}), AdminUpdateUserPermissions)
|
||||
adminRoute.Delete("/users/:id", AdminDeleteUser)
|
||||
adminRoute.Get("/settings", Wrap(AdminGetSettings))
|
||||
adminRoute.Post("/users", bind(dtos.AdminCreateUserForm{}), Wrap(AdminCreateUser))
|
||||
adminRoute.Put("/users/:id/password", bind(dtos.AdminUpdateUserPasswordForm{}), Wrap(AdminUpdateUserPassword))
|
||||
adminRoute.Put("/users/:id/permissions", bind(dtos.AdminUpdateUserPermissionsForm{}), Wrap(AdminUpdateUserPermissions))
|
||||
adminRoute.Delete("/users/:id", Wrap(AdminDeleteUser))
|
||||
adminRoute.Post("/users/:id/disable", Wrap(hs.AdminDisableUser))
|
||||
adminRoute.Post("/users/:id/enable", Wrap(AdminEnableUser))
|
||||
adminRoute.Get("/users/:id/quotas", Wrap(GetUserQuotas))
|
||||
adminRoute.Put("/users/:id/quotas/:target", bind(models.UpdateUserQuotaCmd{}), Wrap(UpdateUserQuota))
|
||||
adminRoute.Get("/stats", AdminGetStats)
|
||||
adminRoute.Get("/stats", Wrap(AdminGetStats))
|
||||
adminRoute.Post("/pause-all-alerts", bind(dtos.PauseAllAlertsCommand{}), Wrap(PauseAllAlerts))
|
||||
|
||||
adminRoute.Post("/users/:id/logout", Wrap(hs.AdminLogoutUser))
|
||||
|
Loading…
Reference in New Issue
Block a user