Refactor DbGetUserByID

Fixes #15
This commit is contained in:
Matthew Dillon 2015-10-13 09:13:35 -07:00
parent e283ec7004
commit 3bfb6fe2b7
3 changed files with 11 additions and 10 deletions

View file

@ -60,14 +60,12 @@ func (u UserService) List(val *url.Values, claims *types.Claims) (types.Entity,
// Get retrieves a single user. // Get retrieves a single user.
func (u UserService) Get(id int64, dummy string, claims *types.Claims) (types.Entity, *types.AppError) { func (u UserService) Get(id int64, dummy string, claims *types.Claims) (types.Entity, *types.AppError) {
user, err := models.DbGetUserByID(id) user, err := models.GetUser(id, dummy, claims)
user.Password = "" user.Password = ""
if err != nil { if err != nil {
return nil, newJSONError(err, http.StatusInternalServerError) return nil, newJSONError(err, http.StatusInternalServerError)
} }
user.CanEdit = claims.Role == "A" || id == claims.Sub
payload := payloads.User{ payload := payloads.User{
User: user, User: user,
Meta: &models.UserMeta{ Meta: &models.UserMeta{
@ -81,7 +79,7 @@ func (u UserService) Get(id int64, dummy string, claims *types.Claims) (types.En
func (u UserService) Update(id int64, e *types.Entity, dummy string, claims *types.Claims) *types.AppError { func (u UserService) Update(id int64, e *types.Entity, dummy string, claims *types.Claims) *types.AppError {
user := (*e).(*payloads.User).User user := (*e).(*payloads.User).User
originalUser, err := models.DbGetUserByID(id) originalUser, err := models.GetUser(id, dummy, claims)
if err != nil { if err != nil {
return newJSONError(err, http.StatusInternalServerError) return newJSONError(err, http.StatusInternalServerError)
} }
@ -263,7 +261,7 @@ func HandleUserLockout(w http.ResponseWriter, r *http.Request) *types.AppError {
func HandleUserPasswordChange(w http.ResponseWriter, r *http.Request) *types.AppError { func HandleUserPasswordChange(w http.ResponseWriter, r *http.Request) *types.AppError {
claims := helpers.GetClaims(r) claims := helpers.GetClaims(r)
if err := models.UpdateUserPassword(claims.Sub, r.FormValue("password")); err != nil { if err := models.UpdateUserPassword(&claims, r.FormValue("password")); err != nil {
return newJSONError(err, http.StatusInternalServerError) return newJSONError(err, http.StatusInternalServerError)
} }

View file

@ -299,7 +299,7 @@ func (fn errorHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func tokenRefresh(j *jwt.Middleware) errorHandler { func tokenRefresh(j *jwt.Middleware) errorHandler {
t := func(w http.ResponseWriter, r *http.Request) *types.AppError { t := func(w http.ResponseWriter, r *http.Request) *types.AppError {
claims := helpers.GetClaims(r) claims := helpers.GetClaims(r)
user, err := models.DbGetUserByID(claims.Sub) user, err := models.GetUser(claims.Sub, "", &claims)
if err != nil { if err != nil {
return newJSONError(err, http.StatusInternalServerError) return newJSONError(err, http.StatusInternalServerError)
} }

View file

@ -112,8 +112,8 @@ func DbAuthenticate(email string, password string) error {
return nil return nil
} }
// DbGetUserByID returns a specific user record by ID. // GetUser returns a specific user record by ID.
func DbGetUserByID(id int64) (*User, error) { func GetUser(id int64, dummy string, claims *types.Claims) (*User, error) {
var user User var user User
q := `SELECT * q := `SELECT *
FROM users FROM users
@ -126,6 +126,9 @@ func DbGetUserByID(id int64) (*User, error) {
} }
return nil, err return nil, err
} }
user.CanEdit = claims.Role == "A" || id == claims.Sub
return &user, nil return &user, nil
} }
@ -167,8 +170,8 @@ func ListUsers(opt helpers.ListOptions, claims *types.Claims) (*Users, error) {
return &users, nil return &users, nil
} }
func UpdateUserPassword(id int64, password string) error { func UpdateUserPassword(claims *types.Claims, password string) error {
user, err := DbGetUserByID(id) user, err := GetUser(claims.Sub, "", claims)
if err != nil { if err != nil {
return err return err
} }