Added a function to change password

This commit is contained in:
Magnus Åhall 2024-02-20 08:05:33 +01:00
parent 92c8ac444f
commit 825bc4d8b2

View File

@ -284,5 +284,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