admin_users.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/middleware"
  6. m "github.com/grafana/grafana/pkg/models"
  7. )
  8. func AdminSearchUsers(c *middleware.Context) {
  9. // query := c.QueryStrings("q")
  10. // page := c.QueryStrings("p")
  11. query := m.SearchUsersQuery{Query: "", Page: 0, Limit: 20}
  12. if err := bus.Dispatch(&query); err != nil {
  13. c.JsonApiErr(500, "Failed to fetch users", err)
  14. return
  15. }
  16. c.JSON(200, query.Result)
  17. }
  18. func AdminGetUser(c *middleware.Context) {
  19. userId := c.ParamsInt64(":id")
  20. query := m.GetUserByIdQuery{Id: userId}
  21. if err := bus.Dispatch(&query); err != nil {
  22. c.JsonApiErr(500, "Failed to fetch user", err)
  23. return
  24. }
  25. result := m.UserDTO{
  26. Name: query.Result.Name,
  27. Email: query.Result.Email,
  28. Login: query.Result.Login,
  29. }
  30. c.JSON(200, result)
  31. }
  32. func AdminCreateUser(c *middleware.Context, form dtos.AdminCreateUserForm) {
  33. cmd := m.CreateUserCommand{
  34. Login: form.Login,
  35. Email: form.Email,
  36. Password: form.Password,
  37. Name: form.Name,
  38. }
  39. if len(cmd.Login) == 0 {
  40. cmd.Login = cmd.Email
  41. if len(cmd.Login) == 0 {
  42. c.JsonApiErr(400, "Validation error, need specify either username or email", nil)
  43. return
  44. }
  45. }
  46. if len(cmd.Password) < 4 {
  47. c.JsonApiErr(400, "Password is missing or too short", nil)
  48. return
  49. }
  50. if err := bus.Dispatch(&cmd); err != nil {
  51. c.JsonApiErr(500, "failed to create user", err)
  52. return
  53. }
  54. c.JsonOK("User created")
  55. }
  56. func AdminUpdateUser(c *middleware.Context, form dtos.AdminUpdateUserForm) {
  57. userId := c.ParamsInt64(":id")
  58. cmd := m.UpdateUserCommand{
  59. UserId: userId,
  60. Login: form.Login,
  61. Email: form.Email,
  62. Name: form.Name,
  63. }
  64. if len(cmd.Login) == 0 {
  65. cmd.Login = cmd.Email
  66. if len(cmd.Login) == 0 {
  67. c.JsonApiErr(400, "Validation error, need specify either username or email", nil)
  68. return
  69. }
  70. }
  71. if err := bus.Dispatch(&cmd); err != nil {
  72. c.JsonApiErr(500, "failed to update user", err)
  73. return
  74. }
  75. c.JsonOK("User updated")
  76. }