| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package api
- import (
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/middleware"
- m "github.com/grafana/grafana/pkg/models"
- "github.com/grafana/grafana/pkg/util"
- )
- func GetUser(c *middleware.Context) {
- query := m.GetUserInfoQuery{UserId: c.UserId}
- if err := bus.Dispatch(&query); err != nil {
- c.JsonApiErr(500, "Failed to get account", err)
- return
- }
- c.JSON(200, query.Result)
- }
- func UpdateUser(c *middleware.Context, cmd m.UpdateUserCommand) {
- cmd.UserId = c.UserId
- if err := bus.Dispatch(&cmd); err != nil {
- c.JsonApiErr(400, "Failed to update account", err)
- return
- }
- c.JsonOK("Account updated")
- }
- func GetUserAccounts(c *middleware.Context) {
- query := m.GetUserAccountsQuery{UserId: c.UserId}
- if err := bus.Dispatch(&query); err != nil {
- c.JsonApiErr(500, "Failed to get user accounts", err)
- return
- }
- for _, ac := range query.Result {
- if ac.AccountId == c.AccountId {
- ac.IsUsing = true
- break
- }
- }
- c.JSON(200, query.Result)
- }
- func validateUsingAccount(userId int64, accountId int64) bool {
- query := m.GetUserAccountsQuery{UserId: userId}
- if err := bus.Dispatch(&query); err != nil {
- return false
- }
- // validate that the account id in the list
- valid := false
- for _, other := range query.Result {
- if other.AccountId == accountId {
- valid = true
- }
- }
- return valid
- }
- func SetUsingAccount(c *middleware.Context) {
- usingAccountId := c.ParamsInt64(":id")
- if !validateUsingAccount(c.UserId, usingAccountId) {
- c.JsonApiErr(401, "Not a valid account", nil)
- return
- }
- cmd := m.SetUsingAccountCommand{
- UserId: c.UserId,
- AccountId: usingAccountId,
- }
- if err := bus.Dispatch(&cmd); err != nil {
- c.JsonApiErr(500, "Failed change active account", err)
- return
- }
- c.JsonOK("Active account changed")
- }
- func ChangeUserPassword(c *middleware.Context, cmd m.ChangeUserPasswordCommand) {
- userQuery := m.GetUserByIdQuery{Id: c.UserId}
- if err := bus.Dispatch(&userQuery); err != nil {
- c.JsonApiErr(500, "Could not read user from database", err)
- return
- }
- passwordHashed := util.EncodePassword(cmd.OldPassword, userQuery.Result.Salt)
- if passwordHashed != userQuery.Result.Password {
- c.JsonApiErr(401, "Invalid old password", nil)
- return
- }
- if len(cmd.NewPassword) < 4 {
- c.JsonApiErr(400, "New password too short", nil)
- return
- }
- cmd.UserId = c.UserId
- cmd.NewPassword = util.EncodePassword(cmd.NewPassword, userQuery.Result.Salt)
- if err := bus.Dispatch(&cmd); err != nil {
- c.JsonApiErr(500, "Failed to change user password", err)
- return
- }
- c.JsonOK("User password changed")
- }
|