preferences.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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, 0)
  19. }
  20. func getPreferencesFor(orgID, userID, teamID int64) Response {
  21. prefsQuery := m.GetPreferencesQuery{UserId: userID, OrgId: orgID, TeamId: teamID}
  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, 0, &dtoCmd)
  35. }
  36. func updatePreferencesFor(orgID, userID, teamId int64, dtoCmd *dtos.UpdatePrefsCmd) Response {
  37. saveCmd := m.SavePreferencesCommand{
  38. UserId: userID,
  39. OrgId: orgID,
  40. TeamId: teamId,
  41. Theme: dtoCmd.Theme,
  42. Timezone: dtoCmd.Timezone,
  43. HomeDashboardId: dtoCmd.HomeDashboardID,
  44. }
  45. if err := bus.Dispatch(&saveCmd); err != nil {
  46. return Error(500, "Failed to save preferences", err)
  47. }
  48. return Success("Preferences updated")
  49. }
  50. // GET /api/org/preferences
  51. func GetOrgPreferences(c *m.ReqContext) Response {
  52. return getPreferencesFor(c.OrgId, 0, 0)
  53. }
  54. // PUT /api/org/preferences
  55. func UpdateOrgPreferences(c *m.ReqContext, dtoCmd dtos.UpdatePrefsCmd) Response {
  56. return updatePreferencesFor(c.OrgId, 0, 0, &dtoCmd)
  57. }