From 0326b5e3c1cc43a0af3930161773caab69a9561c Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 12 Oct 2015 11:00:49 -0700 Subject: [PATCH] Refactor users/list --- api/users.go | 13 ++++--------- models/users.go | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/api/users.go b/api/users.go index 8abb266..330b54d 100644 --- a/api/users.go +++ b/api/users.go @@ -44,18 +44,13 @@ func (u UserService) List(val *url.Values, claims *types.Claims) (types.Entity, return nil, newJSONError(err, http.StatusInternalServerError) } - // TODO: fix this - users := make(models.Users, 0) - sql := `SELECT id, email, 'password' AS password, name, role, - created_at, updated_at, deleted_at - FROM users - WHERE verified IS TRUE - AND deleted_at IS NULL;` - if err := models.DBH.Select(&users, sql); err != nil { + users, err := models.ListUsers(opt, claims) + if err != nil { return nil, newJSONError(err, http.StatusInternalServerError) } + payload := payloads.Users{ - Users: &users, + Users: users, Meta: &models.UserMeta{ CanAdd: claims.Role == "A", }, diff --git a/models/users.go b/models/users.go index b4f28ad..f2ad267 100644 --- a/models/users.go +++ b/models/users.go @@ -146,3 +146,23 @@ func DbGetUserByEmail(email string) (*User, error) { } return &user, nil } + +// ListUsers returns all users. +func ListUsers(opt helpers.ListOptions, claims *types.Claims) (*Users, error) { + q := `SELECT id, email, 'password' AS password, name, role, created_at, + updated_at, deleted_at + FROM users + WHERE verified IS TRUE + AND deleted_at IS NULL;` + + users := make(Users, 0) + if err := DBH.Select(&users, q); err != nil { + return nil, err + } + + for _, u := range users { + u.CanEdit = claims.Role == "A" || u.ID == claims.Sub + } + + return &users, nil +}