apikey.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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/components/apikeygen"
  6. "github.com/grafana/grafana/pkg/middleware"
  7. m "github.com/grafana/grafana/pkg/models"
  8. )
  9. func GetApiKeys(c *middleware.Context) Response {
  10. query := m.GetApiKeysQuery{OrgId: c.OrgId}
  11. if err := bus.Dispatch(&query); err != nil {
  12. return ApiError(500, "Failed to list api keys", err)
  13. }
  14. result := make([]*m.ApiKeyDTO, len(query.Result))
  15. for i, t := range query.Result {
  16. result[i] = &m.ApiKeyDTO{
  17. Id: t.Id,
  18. Name: t.Name,
  19. Role: t.Role,
  20. }
  21. }
  22. return Json(200, result)
  23. }
  24. func DeleteApiKey(c *middleware.Context) Response {
  25. id := c.ParamsInt64(":id")
  26. cmd := &m.DeleteApiKeyCommand{Id: id, OrgId: c.OrgId}
  27. err := bus.Dispatch(cmd)
  28. if err != nil {
  29. return ApiError(500, "Failed to delete API key", err)
  30. }
  31. return ApiSuccess("API key deleted")
  32. }
  33. func AddApiKey(c *middleware.Context, cmd m.AddApiKeyCommand) Response {
  34. if !cmd.Role.IsValid() {
  35. return ApiError(400, "Invalid role specified", nil)
  36. }
  37. cmd.OrgId = c.OrgId
  38. newKeyInfo := apikeygen.New(cmd.OrgId, cmd.Name)
  39. cmd.Key = newKeyInfo.HashedKey
  40. if err := bus.Dispatch(&cmd); err != nil {
  41. return ApiError(500, "Failed to add API key", err)
  42. }
  43. result := &dtos.NewApiKeyResult{
  44. Name: cmd.Result.Name,
  45. Key: newKeyInfo.ClientSecret}
  46. return Json(200, result)
  47. }