org_users.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. "github.com/grafana/grafana/pkg/middleware"
  5. m "github.com/grafana/grafana/pkg/models"
  6. )
  7. func AddOrgUser(c *middleware.Context, cmd m.AddOrgUserCommand) {
  8. if !cmd.Role.IsValid() {
  9. c.JsonApiErr(400, "Invalid role specified", nil)
  10. return
  11. }
  12. userQuery := m.GetUserByLoginQuery{LoginOrEmail: cmd.LoginOrEmail}
  13. err := bus.Dispatch(&userQuery)
  14. if err != nil {
  15. c.JsonApiErr(404, "User not found", nil)
  16. return
  17. }
  18. userToAdd := userQuery.Result
  19. if userToAdd.Id == c.UserId {
  20. c.JsonApiErr(400, "Cannot add yourself as user", nil)
  21. return
  22. }
  23. cmd.OrgId = c.OrgId
  24. cmd.UserId = userToAdd.Id
  25. if err := bus.Dispatch(&cmd); err != nil {
  26. c.JsonApiErr(500, "Could not add user to organization", err)
  27. return
  28. }
  29. c.JsonOK("User added to organization")
  30. }
  31. func GetOrgUsers(c *middleware.Context) {
  32. query := m.GetOrgUsersQuery{OrgId: c.OrgId}
  33. if err := bus.Dispatch(&query); err != nil {
  34. c.JsonApiErr(500, "Failed to get account user", err)
  35. return
  36. }
  37. c.JSON(200, query.Result)
  38. }
  39. func UpdateOrgUser(c *middleware.Context, cmd m.UpdateOrgUserCommand) {
  40. if !cmd.Role.IsValid() {
  41. c.JsonApiErr(400, "Invalid role specified", nil)
  42. return
  43. }
  44. cmd.UserId = c.ParamsInt64(":id")
  45. cmd.OrgId = c.OrgId
  46. if err := bus.Dispatch(&cmd); err != nil {
  47. c.JsonApiErr(500, "Failed update org user", err)
  48. return
  49. }
  50. c.JsonOK("Organization user updated")
  51. }
  52. func RemoveOrgUser(c *middleware.Context) {
  53. userId := c.ParamsInt64(":id")
  54. cmd := m.RemoveOrgUserCommand{OrgId: c.OrgId, UserId: userId}
  55. if err := bus.Dispatch(&cmd); err != nil {
  56. if err == m.ErrLastOrgAdmin {
  57. c.JsonApiErr(400, "Cannot remove last organization admin", nil)
  58. return
  59. }
  60. c.JsonApiErr(500, "Failed to remove user from organization", err)
  61. }
  62. c.JsonOK("User removed from organization")
  63. }