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.UserAccount.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, cmd m.AddTokenCommand) {
  37. if !cmd.Role.IsValid() {
  38. c.JsonApiErr(400, "Invalid role specified", nil)
  39. return
  40. }
  41. cmd.AccountId = c.UserAccount.Id
  42. cmd.Token = util.GetRandomString(64)
  43. if err := bus.Dispatch(&cmd); err != nil {
  44. c.JsonApiErr(500, "Failed to add token", err)
  45. return
  46. }
  47. result := &m.TokenDTO{
  48. Id: cmd.Result.Id,
  49. Name: cmd.Result.Name,
  50. Role: cmd.Result.Role,
  51. Token: cmd.Result.Token,
  52. }
  53. c.JSON(200, result)
  54. }
  55. func UpdateToken(c *middleware.Context, cmd m.UpdateTokenCommand) {
  56. if !cmd.Role.IsValid() {
  57. c.JsonApiErr(400, "Invalid role specified", nil)
  58. return
  59. }
  60. cmd.AccountId = c.UserAccount.Id
  61. err := bus.Dispatch(&cmd)
  62. if err != nil {
  63. c.JsonApiErr(500, "Failed to update token", err)
  64. return
  65. }
  66. c.JsonOK("Token updated")
  67. }