From 2526f031eaacb7353474572bd5dfdd28e84118c5 Mon Sep 17 00:00:00 2001 From: Seth Date: Tue, 26 Mar 2019 20:18:44 -0700 Subject: [PATCH] Addresses lukebp feedback --- politeiawww/user.go | 60 +++++++++++------------------ politeiawww/user/localdb/localdb.go | 6 +-- politeiawww/userwww.go | 4 +- 3 files changed, 28 insertions(+), 42 deletions(-) diff --git a/politeiawww/user.go b/politeiawww/user.go index 744b6d937a..27d4f3956a 100644 --- a/politeiawww/user.go +++ b/politeiawww/user.go @@ -1581,42 +1581,37 @@ func (p *politeiawww) processManageUser(mu *v1.ManageUser, adminUser *user.User) return &v1.ManageUserReply{}, nil } -// processUsers returns a list of users given a set of filters. +// processUsers returns a list of users given a set of filters. Admins +// can search by pubkey, username or admin (partial matches returned). +// Non admins can search by pubkey or username (only exact matches returned). func (p *politeiawww) processUsers(users *v1.Users, isAdmin bool) (*v1.UsersReply, error) { var reply v1.UsersReply reply.Users = make([]v1.AbridgedUser, 0, v1.UserListPageSize) + var u *user.User + var userID string emailQuery := strings.ToLower(users.Email) usernameQuery := formatUsername(users.Username) pubkeyQuery := users.PublicKey - // Ensure we got a proper pubkey, if provided - _, err := validatePubkey(pubkeyQuery) - if pubkeyQuery != "" && err != nil { - return nil, err - } + // Get user by pubkey, if provided + if pubkeyQuery != "" { + // Ensure we got a proper pubkey, if provided + _, err := validatePubkey(pubkeyQuery) + if err != nil { + return nil, err + } - // Get user ID by pubkey, if provided - var userID string - u, err := p.db.UserGetByPublicKey(pubkeyQuery) - if pubkeyQuery != "" && err != nil { - fmt.Printf("%v", "user not found") - return nil, err - } else if pubkeyQuery != "" && err == nil { + // Get user by pubkey + u, err = p.db.UserGetByPublicKey(pubkeyQuery) + if err != nil { + return nil, err + } userID = u.ID.String() - fmt.Printf("%v", userID) } if isAdmin { - - var err error - - err = p.db.AllUsers(func(user *user.User) { - - if err != nil { - return - } - + err := p.db.AllUsers(func(user *user.User) { reply.TotalUsers++ userMatches := true @@ -1653,38 +1648,27 @@ func (p *politeiawww) processUsers(users *v1.Users, isAdmin bool) (*v1.UsersRepl } } }) + if err != nil { + return nil, err + } } else { - // Get user by username, if provided if usernameQuery != "" { - // Ensure we got a proper username. err := validateUsername(usernameQuery) if err != nil { - fmt.Printf("%v", "invalid username") return nil, err } // Get user by username u, err = p.db.UserGetByUsername(usernameQuery) if err != nil { - fmt.Printf("%v", "user not found") - return nil, err - } - } - - // Get user by pubkey, if provided - if pubkeyQuery != "" { - u, err = p.db.UserGetByPublicKey(pubkeyQuery) - if err != nil { - fmt.Printf("%v", "user not found") return nil, err } } reply.Users = append(reply.Users, v1.AbridgedUser{ - ID: u.ID.String(), - // Email: user.Email, + ID: u.ID.String(), Username: u.Username}) } diff --git a/politeiawww/user/localdb/localdb.go b/politeiawww/user/localdb/localdb.go index 4894fc6f42..f0d033df56 100644 --- a/politeiawww/user/localdb/localdb.go +++ b/politeiawww/user/localdb/localdb.go @@ -184,7 +184,7 @@ func (l *localdb) UserGetByPublicKey(pubkey string) (*user.User, error) { return nil, user.ErrShutdown } - log.Debugf("UserGetByPublicKey\n") + log.Debugf("UserGetByPublicKey") iter := l.userdb.NewIterator(nil, nil) for iter.Next() { @@ -200,9 +200,9 @@ func (l *localdb) UserGetByPublicKey(pubkey string) (*user.User, error) { return nil, err } - for _, Identity := range u.Identities { + for _, identity := range u.Identities { - if hex.EncodeToString(Identity.Key[:]) == pubkey { + if hex.EncodeToString(identity.Key[:]) == pubkey { return u, err } } diff --git a/politeiawww/userwww.go b/politeiawww/userwww.go index 23aa52924a..0150a05842 100644 --- a/politeiawww/userwww.go +++ b/politeiawww/userwww.go @@ -597,7 +597,9 @@ func (p *politeiawww) handleUsers(w http.ResponseWriter, r *http.Request) { log.Debugf("handleUsers: could not get session user: %v", err) } - ur, err := p.processUsers(&u, user != nil && user.Admin) + isAdmin := (user != nil && user.Admin) + ur, err := p.processUsers(&u, isAdmin) + if err != nil { RespondWithError(w, r, 0, "handleUsers: processUsers %v", err)