token.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package api
  2. import (
  3. "github.com/torkelo/grafana-pro/pkg/bus"
  4. "github.com/torkelo/grafana-pro/pkg/middleware"
  5. m "github.com/torkelo/grafana-pro/pkg/models"
  6. "github.com/torkelo/grafana-pro/pkg/util"
  7. )
  8. func GetTokens(c *middleware.Context) {
  9. query := m.GetTokensQuery{AccountId: c.Account.Id}
  10. err := bus.Dispatch(&query)
  11. if err != nil {
  12. c.JsonApiErr(500, "Failed to list tokens", err)
  13. return
  14. }
  15. result := make([]*m.TokenDTO, len(query.Result))
  16. for i, t := range query.Result {
  17. result[i] = &m.TokenDTO{
  18. Id: t.Id,
  19. Name: t.Name,
  20. Role: t.Role,
  21. Token: t.Token,
  22. }
  23. }
  24. c.JSON(200, result)
  25. }
  26. func DeleteToken(c *middleware.Context) {
  27. id := c.ParamsInt64(":id")
  28. cmd := &m.DeleteTokenCommand{Id: id, AccountId: c.UserAccount.Id}
  29. err := bus.Dispatch(cmd)
  30. if err != nil {
  31. c.JsonApiErr(500, "Failed to delete token", err)
  32. return
  33. }
  34. c.JsonOK("Token deleted")
  35. }
  36. func AddToken(c *middleware.Context) {
  37. cmd := m.AddTokenCommand{}
  38. if !c.JsonBody(&cmd) {
  39. c.JsonApiErr(400, "Validation failed", nil)
  40. return
  41. }
  42. if cmd.Role != m.ROLE_READ_WRITE && cmd.Role != m.ROLE_READ {
  43. c.JsonApiErr(400, "Invalid role specified", nil)
  44. return
  45. }
  46. cmd.AccountId = c.Account.Id
  47. cmd.Token = util.GetRandomString(64)
  48. if err := bus.Dispatch(&cmd); err != nil {
  49. c.JsonApiErr(500, "Failed to add token", err)
  50. return
  51. }
  52. result := &m.TokenDTO{
  53. Id: cmd.Result.Id,
  54. Name: cmd.Result.Name,
  55. Role: cmd.Result.Role,
  56. Token: cmd.Result.Token,
  57. }
  58. c.JSON(200, result)
  59. }
  60. func UpdateToken(c *middleware.Context) {
  61. cmd := m.UpdateTokenCommand{}
  62. if !c.JsonBody(&cmd) {
  63. c.JsonApiErr(400, "Validation failed", nil)
  64. return
  65. }
  66. cmd.AccountId = c.Account.Id
  67. err := bus.Dispatch(&cmd)
  68. if err != nil {
  69. c.JsonApiErr(500, "Failed to update token", err)
  70. return
  71. }
  72. c.JsonOK("Token updated")
  73. }