Commit cf926134 by utkarshcmu

Added savePreferencesAPI

parent e73e7aea
...@@ -96,6 +96,7 @@ func Register(r *macaron.Macaron) { ...@@ -96,6 +96,7 @@ func Register(r *macaron.Macaron) {
r.Delete("/stars/dashboard/:id", wrap(UnstarDashboard)) r.Delete("/stars/dashboard/:id", wrap(UnstarDashboard))
r.Put("/password", bind(m.ChangeUserPasswordCommand{}), wrap(ChangeUserPassword)) r.Put("/password", bind(m.ChangeUserPasswordCommand{}), wrap(ChangeUserPassword))
r.Get("/quotas", wrap(GetUserQuotas)) r.Get("/quotas", wrap(GetUserQuotas))
r.Put("/prefs", bind(m.SavePreferenceCommand{}), wrap(SaveUserPreferences))
}) })
// users (admin permission required) // users (admin permission required)
......
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/middleware"
m "github.com/grafana/grafana/pkg/models" m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/util" "github.com/grafana/grafana/pkg/util"
"github.com/grafana/grafana/pkg/log"
) )
// GET /api/user (current authenticated user) // GET /api/user (current authenticated user)
...@@ -110,7 +111,10 @@ func UserSetUsingOrg(c *middleware.Context) Response { ...@@ -110,7 +111,10 @@ func UserSetUsingOrg(c *middleware.Context) Response {
} }
func ChangeUserPassword(c *middleware.Context, cmd m.ChangeUserPasswordCommand) Response { func ChangeUserPassword(c *middleware.Context, cmd m.ChangeUserPasswordCommand) Response {
userQuery := m.GetUserByIdQuery{Id: c.UserId}
log.Info("%v", cmd)
userQuery := m.GetUserByIdQuery{Id: c.UserId}
if err := bus.Dispatch(&userQuery); err != nil { if err := bus.Dispatch(&userQuery); err != nil {
return ApiError(500, "Could not read user from database", err) return ApiError(500, "Could not read user from database", err)
...@@ -144,3 +148,18 @@ func SearchUsers(c *middleware.Context) Response { ...@@ -144,3 +148,18 @@ func SearchUsers(c *middleware.Context) Response {
return Json(200, query.Result) return Json(200, query.Result)
} }
func SaveUserPreferences(c *middleware.Context, cmd m.SavePreferenceCommand) Response {
log.Info("%v", cmd.PrefData)
cmd.PrefId = c.UserId
cmd.PrefType = `user`
if err := bus.Dispatch(&cmd); err != nil {
return ApiError(500, "Failed to saved user preferences", err)
}
return ApiSuccess("User preferences saved")
}
package models
import (
"errors"
)
// Typed errors
var (
ErrPreferenceNotFound = errors.New("Preference not found")
)
type Preference struct {
Id int64
PrefId int64
PrefType string
PrefData map[string]interface{}
}
// ---------------------
// COMMANDS
type SavePreferenceCommand struct {
PrefData map[string]interface{} `json:"prefData"`
PrefId int64 `json:"-"`
PrefType string `json:"-"`
}
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
m "github.com/grafana/grafana/pkg/models" m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/util" "github.com/grafana/grafana/pkg/util"
"github.com/grafana/grafana/pkg/log"
) )
func init() { func init() {
...@@ -27,6 +28,7 @@ func init() { ...@@ -27,6 +28,7 @@ func init() {
bus.AddHandler("sql", DeleteUser) bus.AddHandler("sql", DeleteUser)
bus.AddHandler("sql", SetUsingOrg) bus.AddHandler("sql", SetUsingOrg)
bus.AddHandler("sql", UpdateUserPermissions) bus.AddHandler("sql", UpdateUserPermissions)
bus.AddHandler("sql", SaveUserPreferences)
} }
func getOrgIdForNewUser(cmd *m.CreateUserCommand, sess *session) (int64, error) { func getOrgIdForNewUser(cmd *m.CreateUserCommand, sess *session) (int64, error) {
...@@ -346,3 +348,26 @@ func UpdateUserPermissions(cmd *m.UpdateUserPermissionsCommand) error { ...@@ -346,3 +348,26 @@ func UpdateUserPermissions(cmd *m.UpdateUserPermissionsCommand) error {
return err return err
}) })
} }
func SaveUserPreferences(cmd *m.SavePreferenceCommand) error {
return inTransaction2(func(sess *session) error {
log.Info("%v", cmd)
pref := m.Preference{
PrefId: cmd.PrefId,
PrefType: cmd.PrefType,
PrefData: cmd.PrefData,
}
sess.Table("preferences").Where("pref_id", pref.PrefId).And("pref_type", pref.PrefType)
if _, err := sess.Update(&pref); err != nil {
return err
}
log.Info("%v", pref)
return nil
})
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment