apikey.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. bus.Dispatch(&m.SendEmailCommand{
  23. To: []string{"torkel@raintank.io"},
  24. From: "grafana@test.com",
  25. Subject: "Test from Grafana2",
  26. Body: "Body! hej hoppas allt är bra",
  27. })
  28. return Json(200, result)
  29. }
  30. func DeleteApiKey(c *middleware.Context) Response {
  31. id := c.ParamsInt64(":id")
  32. cmd := &m.DeleteApiKeyCommand{Id: id, OrgId: c.OrgId}
  33. err := bus.Dispatch(cmd)
  34. if err != nil {
  35. return ApiError(500, "Failed to delete API key", err)
  36. }
  37. return ApiSuccess("API key deleted")
  38. }
  39. func AddApiKey(c *middleware.Context, cmd m.AddApiKeyCommand) Response {
  40. if !cmd.Role.IsValid() {
  41. return ApiError(400, "Invalid role specified", nil)
  42. }
  43. cmd.OrgId = c.OrgId
  44. newKeyInfo := apikeygen.New(cmd.OrgId, cmd.Name)
  45. cmd.Key = newKeyInfo.HashedKey
  46. if err := bus.Dispatch(&cmd); err != nil {
  47. return ApiError(500, "Failed to add API key", err)
  48. }
  49. result := &dtos.NewApiKeyResult{
  50. Name: cmd.Result.Name,
  51. Key: newKeyInfo.ClientSecret}
  52. return Json(200, result)
  53. }