user.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. )
  7. func GetUser(c *middleware.Context) {
  8. query := m.GetUserInfoQuery{UserId: c.UserId}
  9. if err := bus.Dispatch(&query); err != nil {
  10. c.JsonApiErr(500, "Failed to get account", err)
  11. return
  12. }
  13. c.JSON(200, query.Result)
  14. }
  15. func UpdateUser(c *middleware.Context, cmd m.UpdateUserCommand) {
  16. cmd.UserId = c.UserId
  17. if err := bus.Dispatch(&cmd); err != nil {
  18. c.JsonApiErr(400, "Failed to update account", err)
  19. return
  20. }
  21. c.JsonOK("Account updated")
  22. }
  23. func GetUserAccounts(c *middleware.Context) {
  24. query := m.GetUserAccountsQuery{UserId: c.UserId}
  25. if err := bus.Dispatch(&query); err != nil {
  26. c.JsonApiErr(500, "Failed to get user accounts", err)
  27. return
  28. }
  29. for _, ac := range query.Result {
  30. if ac.AccountId == c.AccountId {
  31. ac.IsUsing = true
  32. break
  33. }
  34. }
  35. c.JSON(200, query.Result)
  36. }
  37. func validateUsingAccount(userId int64, accountId int64) bool {
  38. query := m.GetUserAccountsQuery{UserId: userId}
  39. if err := bus.Dispatch(&query); err != nil {
  40. return false
  41. }
  42. // validate that the account id in the list
  43. valid := false
  44. for _, other := range query.Result {
  45. if other.AccountId == accountId {
  46. valid = true
  47. }
  48. }
  49. return valid
  50. }
  51. func SetUsingAccount(c *middleware.Context) {
  52. usingAccountId := c.ParamsInt64(":id")
  53. if !validateUsingAccount(c.AccountId, usingAccountId) {
  54. c.JsonApiErr(401, "Not a valid account", nil)
  55. return
  56. }
  57. cmd := m.SetUsingAccountCommand{
  58. UserId: c.UserId,
  59. AccountId: usingAccountId,
  60. }
  61. if err := bus.Dispatch(&cmd); err != nil {
  62. c.JsonApiErr(500, "Failed change active account", err)
  63. return
  64. }
  65. c.JsonOK("Active account changed")
  66. }