token.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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.AccountId}
  10. if err := bus.Dispatch(&query); err != nil {
  11. c.JsonApiErr(500, "Failed to list tokens", err)
  12. return
  13. }
  14. result := make([]*m.TokenDTO, len(query.Result))
  15. for i, t := range query.Result {
  16. result[i] = &m.TokenDTO{
  17. Id: t.Id,
  18. Name: t.Name,
  19. Role: t.Role,
  20. Token: t.Token,
  21. }
  22. }
  23. c.JSON(200, result)
  24. }
  25. func DeleteToken(c *middleware.Context) {
  26. id := c.ParamsInt64(":id")
  27. cmd := &m.DeleteTokenCommand{Id: id, AccountId: c.AccountId}
  28. err := bus.Dispatch(cmd)
  29. if err != nil {
  30. c.JsonApiErr(500, "Failed to delete token", err)
  31. return
  32. }
  33. c.JsonOK("Token deleted")
  34. }
  35. func AddToken(c *middleware.Context, cmd m.AddTokenCommand) {
  36. if !cmd.Role.IsValid() {
  37. c.JsonApiErr(400, "Invalid role specified", nil)
  38. return
  39. }
  40. cmd.AccountId = c.AccountId
  41. cmd.Token = util.GetRandomString(64)
  42. if err := bus.Dispatch(&cmd); err != nil {
  43. c.JsonApiErr(500, "Failed to add token", err)
  44. return
  45. }
  46. result := &m.TokenDTO{
  47. Id: cmd.Result.Id,
  48. Name: cmd.Result.Name,
  49. Role: cmd.Result.Role,
  50. Token: cmd.Result.Token,
  51. }
  52. c.JSON(200, result)
  53. }
  54. func UpdateToken(c *middleware.Context, cmd m.UpdateTokenCommand) {
  55. if !cmd.Role.IsValid() {
  56. c.JsonApiErr(400, "Invalid role specified", nil)
  57. return
  58. }
  59. cmd.AccountId = c.AccountId
  60. err := bus.Dispatch(&cmd)
  61. if err != nil {
  62. c.JsonApiErr(500, "Failed to update token", err)
  63. return
  64. }
  65. c.JsonOK("Token updated")
  66. }