1
0
mirror of https://github.com/delight-im/PHP-Auth.git synced 2025-07-10 19:16:22 +02:00

Allow for users to enable or disable password resets on their own

This commit is contained in:
Marco
2017-07-30 16:34:29 +02:00
parent 72b2468aa3
commit 2247c2781c

View File

@ -1028,6 +1028,63 @@ final class Auth extends UserManager {
}
}
/**
* Sets whether password resets should be permitted for the account of the currently signed-in user
*
* @param bool $enabled whether password resets should be enabled for the user's account
* @throws NotLoggedInException if the user is not currently signed in
* @throws AuthError if an internal problem occurred (do *not* catch)
*/
public function setPasswordResetEnabled($enabled) {
$enabled = (bool) $enabled;
if ($this->isLoggedIn()) {
try {
$this->db->update(
$this->dbTablePrefix . 'users',
[
'resettable' => $enabled ? 1 : 0
],
[
'id' => $this->getUserId()
]
);
}
catch (Error $e) {
throw new DatabaseError();
}
}
else {
throw new NotLoggedInException();
}
}
/**
* Returns whether password resets are permitted for the account of the currently signed-in user
*
* @return bool
* @throws NotLoggedInException if the user is not currently signed in
* @throws AuthError if an internal problem occurred (do *not* catch)
*/
public function isPasswordResetEnabled() {
if ($this->isLoggedIn()) {
try {
$enabled = $this->db->selectValue(
'SELECT resettable FROM ' . $this->dbTablePrefix . 'users WHERE id = ?',
[ $this->getUserId() ]
);
return (int) $enabled === 1;
}
catch (Error $e) {
throw new DatabaseError();
}
}
else {
throw new NotLoggedInException();
}
}
/**
* Sets whether the user is currently logged in and updates the session
*