admin_users.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 := m.SearchUsersQuery{Query: "", Page: 0, Limit: 20}
  10. if err := bus.Dispatch(&query); err != nil {
  11. c.JsonApiErr(500, "Failed to fetch users", err)
  12. return
  13. }
  14. c.JSON(200, query.Result)
  15. }
  16. func AdminGetUser(c *middleware.Context) {
  17. userId := c.ParamsInt64(":id")
  18. query := m.GetUserByIdQuery{Id: userId}
  19. if err := bus.Dispatch(&query); err != nil {
  20. c.JsonApiErr(500, "Failed to fetch user", err)
  21. return
  22. }
  23. result := m.UserDTO{
  24. Name: query.Result.Name,
  25. Email: query.Result.Email,
  26. Login: query.Result.Login,
  27. }
  28. c.JSON(200, result)
  29. }
  30. func AdminCreateUser(c *middleware.Context, form dtos.AdminCreateUserForm) {
  31. cmd := m.CreateUserCommand{
  32. Login: form.Login,
  33. Email: form.Email,
  34. Password: form.Password,
  35. Name: form.Name,
  36. }
  37. if len(cmd.Login) == 0 {
  38. cmd.Login = cmd.Email
  39. if len(cmd.Login) == 0 {
  40. c.JsonApiErr(400, "Validation error, need specify either username or email", nil)
  41. return
  42. }
  43. }
  44. if len(cmd.Password) < 4 {
  45. c.JsonApiErr(400, "Password is missing or too short", nil)
  46. return
  47. }
  48. if err := bus.Dispatch(&cmd); err != nil {
  49. c.JsonApiErr(500, "failed to create user", err)
  50. return
  51. }
  52. c.JsonOK("User created")
  53. }
  54. func AdminUpdateUser(c *middleware.Context, form dtos.AdminUpdateUserForm) {
  55. userId := c.ParamsInt64(":id")
  56. cmd := m.UpdateUserCommand{
  57. UserId: userId,
  58. Login: form.Login,
  59. Email: form.Email,
  60. Name: form.Name,
  61. }
  62. if len(cmd.Login) == 0 {
  63. cmd.Login = cmd.Email
  64. if len(cmd.Login) == 0 {
  65. c.JsonApiErr(400, "Validation error, need specify either username or email", nil)
  66. return
  67. }
  68. }
  69. if err := bus.Dispatch(&cmd); err != nil {
  70. c.JsonApiErr(500, "failed to update user", err)
  71. return
  72. }
  73. c.JsonOK("User updated")
  74. }
  75. func AdminDeleteUser(c *middleware.Context) {
  76. userId := c.ParamsInt64(":id")
  77. cmd := m.DeleteUserCommand{UserId: userId}
  78. if err := bus.Dispatch(&cmd); err != nil {
  79. c.JsonApiErr(500, "Failed to delete user", err)
  80. return
  81. }
  82. c.JsonOK("User deleted")
  83. }