preferences.go 2.0 KB

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