org.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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/metrics"
  6. "github.com/grafana/grafana/pkg/middleware"
  7. m "github.com/grafana/grafana/pkg/models"
  8. "github.com/grafana/grafana/pkg/setting"
  9. "github.com/grafana/grafana/pkg/util"
  10. )
  11. // GET /api/org
  12. func GetOrgCurrent(c *middleware.Context) Response {
  13. return getOrgHelper(c.OrgId)
  14. }
  15. // GET /api/orgs/:orgId
  16. func GetOrgById(c *middleware.Context) Response {
  17. return getOrgHelper(c.ParamsInt64(":orgId"))
  18. }
  19. func getOrgHelper(orgId int64) Response {
  20. query := m.GetOrgByIdQuery{Id: orgId}
  21. if err := bus.Dispatch(&query); err != nil {
  22. if err == m.ErrOrgNotFound {
  23. return ApiError(404, "Organization not found", err)
  24. }
  25. return ApiError(500, "Failed to get organization", err)
  26. }
  27. org := query.Result
  28. result := m.OrgDetailsDTO{
  29. Id: org.Id,
  30. Name: org.Name,
  31. Address: m.Address{
  32. Address1: org.Address1,
  33. Address2: org.Address2,
  34. City: org.City,
  35. ZipCode: org.ZipCode,
  36. State: org.State,
  37. Country: org.Country,
  38. },
  39. }
  40. return Json(200, &result)
  41. }
  42. // POST /api/orgs
  43. func CreateOrg(c *middleware.Context, cmd m.CreateOrgCommand) Response {
  44. if !c.IsSignedIn || (!setting.AllowUserOrgCreate && !c.IsGrafanaAdmin) {
  45. return ApiError(403, "Access denied", nil)
  46. }
  47. cmd.UserId = c.UserId
  48. if err := bus.Dispatch(&cmd); err != nil {
  49. if err == m.ErrOrgNameTaken {
  50. return ApiError(400, "Organization name taken", err)
  51. }
  52. return ApiError(500, "Failed to create organization", err)
  53. }
  54. metrics.M_Api_Org_Create.Inc(1)
  55. return Json(200, &util.DynMap{
  56. "orgId": cmd.Result.Id,
  57. "message": "Organization created",
  58. })
  59. }
  60. // PUT /api/org
  61. func UpdateOrgCurrent(c *middleware.Context, form dtos.UpdateOrgForm) Response {
  62. return updateOrgHelper(form, c.OrgId)
  63. }
  64. // PUT /api/orgs/:orgId
  65. func UpdateOrg(c *middleware.Context, form dtos.UpdateOrgForm) Response {
  66. return updateOrgHelper(form, c.ParamsInt64(":orgId"))
  67. }
  68. func updateOrgHelper(form dtos.UpdateOrgForm, orgId int64) Response {
  69. cmd := m.UpdateOrgCommand{Name: form.Name, OrgId: orgId}
  70. if err := bus.Dispatch(&cmd); err != nil {
  71. if err == m.ErrOrgNameTaken {
  72. return ApiError(400, "Organization name taken", err)
  73. }
  74. return ApiError(500, "Failed to update organization", err)
  75. }
  76. return ApiSuccess("Organization updated")
  77. }
  78. // PUT /api/org/address
  79. func UpdateOrgAddressCurrent(c *middleware.Context, form dtos.UpdateOrgAddressForm) Response {
  80. return updateOrgAddressHelper(form, c.OrgId)
  81. }
  82. // PUT /api/orgs/:orgId/address
  83. func UpdateOrgAddress(c *middleware.Context, form dtos.UpdateOrgAddressForm) Response {
  84. return updateOrgAddressHelper(form, c.ParamsInt64(":orgId"))
  85. }
  86. func updateOrgAddressHelper(form dtos.UpdateOrgAddressForm, orgId int64) Response {
  87. cmd := m.UpdateOrgAddressCommand{
  88. OrgId: orgId,
  89. Address: m.Address{
  90. Address1: form.Address1,
  91. Address2: form.Address2,
  92. City: form.City,
  93. State: form.State,
  94. ZipCode: form.ZipCode,
  95. Country: form.Country,
  96. },
  97. }
  98. if err := bus.Dispatch(&cmd); err != nil {
  99. return ApiError(500, "Failed to update org address", err)
  100. }
  101. return ApiSuccess("Address updated")
  102. }
  103. // GET /api/orgs/:orgId
  104. func DeleteOrgById(c *middleware.Context) Response {
  105. if err := bus.Dispatch(&m.DeleteOrgCommand{Id: c.ParamsInt64(":orgId")}); err != nil {
  106. return ApiError(500, "Failed to update organization", err)
  107. }
  108. return ApiSuccess("Organization deleted")
  109. }
  110. func SearchOrgs(c *middleware.Context) Response {
  111. query := m.SearchOrgsQuery{
  112. Query: c.Query("query"),
  113. Name: c.Query("name"),
  114. Page: 0,
  115. Limit: 1000,
  116. }
  117. if err := bus.Dispatch(&query); err != nil {
  118. return ApiError(500, "Failed to search orgs", err)
  119. }
  120. return Json(200, query.Result)
  121. }