forked from jason/cpolis
Added ability to delete other users
This commit is contained in:
@ -14,6 +14,7 @@ const (
|
||||
Publisher
|
||||
Editor
|
||||
Author
|
||||
NonExistent
|
||||
)
|
||||
|
||||
type User struct {
|
||||
@ -269,7 +270,7 @@ func (db *DB) AddFirstUser(u *User, pass string) (int64, error) {
|
||||
return 0, fmt.Errorf("error: %v unsuccessful retries for DB operation, aborting", TxMaxRetries)
|
||||
}
|
||||
|
||||
func (db *DB) GetAllUsers() ([]*User, error) {
|
||||
func (db *DB) GetAllUsers() (map[int64]*User, error) {
|
||||
query := "SELECT id, username, first_name, last_name, role FROM users"
|
||||
|
||||
rows, err := db.Query(query)
|
||||
@ -277,14 +278,14 @@ func (db *DB) GetAllUsers() ([]*User, error) {
|
||||
return nil, fmt.Errorf("error getting all users from DB: %v", err)
|
||||
}
|
||||
|
||||
users := make([]*User, 0)
|
||||
users := make(map[int64]*User, 0)
|
||||
for rows.Next() {
|
||||
user := new(User)
|
||||
if err = rows.Scan(&user.ID, &user.UserName, &user.FirstName,
|
||||
&user.LastName, &user.Role); err != nil {
|
||||
return nil, fmt.Errorf("error getting user info: %v", err)
|
||||
}
|
||||
users = append(users, user)
|
||||
users[user.ID] = user
|
||||
}
|
||||
|
||||
return users, nil
|
||||
@ -299,11 +300,7 @@ func (tx *Tx) SetPassword(id int64, newPass string) error {
|
||||
return fmt.Errorf("error creating password hash: %v", err)
|
||||
}
|
||||
|
||||
setQuery := `
|
||||
UPDATE users
|
||||
SET password = ?
|
||||
WHERE id = ?
|
||||
`
|
||||
setQuery := "UPDATE users SET password = ? WHERE id = ?"
|
||||
if _, err = tx.Exec(setQuery, string(hashedPass), id); err != nil {
|
||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
||||
log.Fatalf("transaction error: %v, rollback error: %v", err, rollbackErr)
|
||||
@ -370,3 +367,14 @@ func (db *DB) UpdateUserAttributes(id int64, user, first, last, newPass, newPass
|
||||
|
||||
return fmt.Errorf("error: %v unsuccessful retries for DB operation, aborting", TxMaxRetries)
|
||||
}
|
||||
|
||||
func (db *DB) DeleteUser(id int64) error {
|
||||
query := "DELETE FROM users WHERE id = ?"
|
||||
|
||||
_, err := db.Exec(query, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error deleting user %v from DB: %v", id, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user