Compare commits
2 Commits
f28b5188a6
...
ad1cb56a06
Author | SHA1 | Date | |
---|---|---|---|
ad1cb56a06 | |||
825bc4d8b2 |
@ -286,5 +286,36 @@ func (db *T) CreateUser(username, password, name string) (userID int64, err erro
|
||||
err = row.Scan(&userID)
|
||||
return
|
||||
} // }}}
|
||||
func (db *T) ChangePassword(userID int, currentPassword, newPassword string) (changed bool, err error) { // {{{
|
||||
var res sql.Result
|
||||
res, err = db.Conn.Exec(`
|
||||
UPDATE _webservice.user
|
||||
SET
|
||||
"password" = _webservice.password_hash(
|
||||
/* salt in hex */
|
||||
ENCODE(_webservice.gen_random_bytes(16), 'hex'),
|
||||
|
||||
/* password */
|
||||
$3::bytea
|
||||
)
|
||||
WHERE
|
||||
id = $1 AND
|
||||
"password" = _webservice.password_hash(SUBSTRING(password FROM 1 FOR 32), $2::bytea)
|
||||
|
||||
`,
|
||||
userID,
|
||||
currentPassword,
|
||||
newPassword,
|
||||
)
|
||||
|
||||
var rowsAffected int64
|
||||
rowsAffected, err = res.RowsAffected()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
changed = (rowsAffected == 1)
|
||||
return
|
||||
} // }}}
|
||||
|
||||
// vim: foldmethod=marker
|
||||
|
Loading…
Reference in New Issue
Block a user