preferences.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. )
  7. // POST /api/preferences/set-home-dash
  8. func SetHomeDashboard(c *m.ReqContext, cmd m.SavePreferencesCommand) Response {
  9. cmd.UserId = c.UserId
  10. cmd.OrgId = c.OrgId
  11. if err := bus.Dispatch(&cmd); err != nil {
  12. return Error(500, "Failed to set home dashboard", err)
  13. }
  14. return Success("Home dashboard set")
  15. }
  16. // GET /api/user/preferences
  17. func GetUserPreferences(c *m.ReqContext) Response {
  18. return getPreferencesFor(c.OrgId, c.UserId)
  19. }
  20. func getPreferencesFor(orgID int64, userID int64) Response {
  21. prefsQuery := m.GetPreferencesQuery{UserId: userID, OrgId: orgID}
  22. if err := bus.Dispatch(&prefsQuery); err != nil {
  23. return Error(500, "Failed to get preferences", err)
  24. }
  25. dto := dtos.Prefs{
  26. Theme: prefsQuery.Result.Theme,
  27. HomeDashboardID: prefsQuery.Result.HomeDashboardId,
  28. Timezone: prefsQuery.Result.Timezone,
  29. }
  30. return JSON(200, &dto)
  31. }
  32. // PUT /api/user/preferences
  33. func UpdateUserPreferences(c *m.ReqContext, dtoCmd dtos.UpdatePrefsCmd) Response {
  34. return updatePreferencesFor(c.OrgId, c.UserId, &dtoCmd)
  35. }
  36. func updatePreferencesFor(orgID int64, userID int64, dtoCmd *dtos.UpdatePrefsCmd) Response {
  37. saveCmd := m.SavePreferencesCommand{
  38. UserId: userID,
  39. OrgId: orgID,
  40. Theme: dtoCmd.Theme,
  41. Timezone: dtoCmd.Timezone,
  42. HomeDashboardId: dtoCmd.HomeDashboardID,
  43. }
  44. if err := bus.Dispatch(&saveCmd); err != nil {
  45. return Error(500, "Failed to save preferences", err)
  46. }
  47. return Success("Preferences updated")
  48. }
  49. // GET /api/org/preferences
  50. func GetOrgPreferences(c *m.ReqContext) Response {
  51. return getPreferencesFor(c.OrgId, 0)
  52. }
  53. // PUT /api/org/preferences
  54. func UpdateOrgPreferences(c *m.ReqContext, dtoCmd dtos.UpdatePrefsCmd) Response {
  55. return updatePreferencesFor(c.OrgId, 0, &dtoCmd)
  56. }