Small refactor for user preferences
This commit is contained in:
parent
1a712fb7a9
commit
81d02b82dc
13 changed files with 202 additions and 112 deletions
|
|
@ -8,6 +8,9 @@ import (
|
|||
"github.com/jmoiron/sqlx"
|
||||
"github.com/lib/pq"
|
||||
|
||||
// Internal
|
||||
appUser "notes2/user"
|
||||
|
||||
// Standard
|
||||
"database/sql"
|
||||
"encoding/hex"
|
||||
|
|
@ -27,12 +30,6 @@ type Manager struct {
|
|||
ExpireDays int
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int
|
||||
Username string
|
||||
Name string
|
||||
}
|
||||
|
||||
func httpError(w http.ResponseWriter, err error) { // {{{
|
||||
j, _ := json.Marshal(struct {
|
||||
OK bool
|
||||
|
|
@ -165,16 +162,16 @@ func (mngr *Manager) AuthenticationHandler(w http.ResponseWriter, r *http.Reques
|
|||
mngr.log.Info("authentication", "username", request.Username, "status", "accepted")
|
||||
j, _ := json.Marshal(struct {
|
||||
OK bool
|
||||
User User
|
||||
User appUser.User
|
||||
Token string
|
||||
}{true, user, token})
|
||||
w.Write(j)
|
||||
} // }}}
|
||||
|
||||
func (mngr *Manager) Authenticate(username, password string) (authenticated bool, user User, err error) { // {{{
|
||||
func (mngr *Manager) Authenticate(username, password string) (authenticated bool, user appUser.User, err error) { // {{{
|
||||
var row *sql.Row
|
||||
row = mngr.db.QueryRow(`
|
||||
SELECT id, username, name
|
||||
SELECT id, username, name, preferences
|
||||
FROM public.user
|
||||
WHERE
|
||||
LOWER(username) = LOWER($1) AND
|
||||
|
|
@ -183,13 +180,21 @@ func (mngr *Manager) Authenticate(username, password string) (authenticated bool
|
|||
username,
|
||||
password,
|
||||
)
|
||||
err = row.Scan(&user.ID, &user.Username, &user.Name)
|
||||
var data []byte
|
||||
err = row.Scan(&user.ID, &user.Username, &user.Name, &data)
|
||||
if err != nil && err.Error() == "sql: no rows in result set" {
|
||||
err = nil
|
||||
authenticated = false
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
authenticated = false
|
||||
return
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, &user.Preferences)
|
||||
if err != nil {
|
||||
authenticated = false
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -278,7 +283,7 @@ func (mngr *Manager) ChangePassword(username, currentPassword, newPassword strin
|
|||
changed = (rowsAffected == 1)
|
||||
return
|
||||
} // }}}
|
||||
func (mngr *Manager) NewClientUUID(user User) (clientUUID string, err error) { // {{{
|
||||
func (mngr *Manager) NewClientUUID(user appUser.User) (clientUUID string, err error) { // {{{
|
||||
// Each client session has its own UUID.
|
||||
// Loop through until a unique one is established.
|
||||
var proposedClientUUID string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue