1
0
mirror of https://github.com/delight-im/PHP-Auth.git synced 2025-08-09 09:36:31 +02:00

2 Commits

3 changed files with 19 additions and 2 deletions

View File

@@ -403,6 +403,8 @@ $url = 'https://www.example.com/verify_email?selector=' . \urlencode($selector)
After the request to change the email address has been made, or even better, after the change has been confirmed by the user, you should send an email to their accounts *previous* email address as an out-of-band notification informing the account owner about this critical change. After the request to change the email address has been made, or even better, after the change has been confirmed by the user, you should send an email to their accounts *previous* email address as an out-of-band notification informing the account owner about this critical change.
**Note:** Changes to a users email address take effect in the local session immediately, as expected. In other sessions (e.g. on other devices), the changes may need up to five minutes to take effect, though. This increases performance and usually poses no problem. If you want to change this behavior, nevertheless, simply decrease (or perhaps increase) the value that you pass to the [`Auth` constructor](#creating-a-new-instance) as the argument named `$sessionResyncInterval`.
### Re-sending confirmation requests ### Re-sending confirmation requests
If an earlier confirmation request could not be delivered to the user, or if the user missed that request, or if they just dont want to wait any longer, you may re-send an earlier request like this: If an earlier confirmation request could not be delivered to the user, or if the user missed that request, or if they just dont want to wait any longer, you may re-send an earlier request like this:
@@ -477,6 +479,8 @@ Additionally, if you store custom information in the session as well, and if you
$auth->destroySession(); $auth->destroySession();
``` ```
**Note:** Global logouts take effect in the local session immediately, as expected. In other sessions (e.g. on other devices), the changes may need up to five minutes to take effect, though. This increases performance and usually poses no problem. If you want to change this behavior, nevertheless, simply decrease (or perhaps increase) the value that you pass to the [`Auth` constructor](#creating-a-new-instance) as the argument named `$sessionResyncInterval`.
### Accessing user information ### Accessing user information
#### Login state #### Login state
@@ -927,6 +931,8 @@ catch (\Delight\Auth\AmbiguousUsernameException $e) {
} }
``` ```
**Note:** Changes to a users set of roles take effect in the local session immediately, as expected. In other sessions (e.g. on other devices), the changes may need up to five minutes to take effect, though. This increases performance and usually poses no problem. If you want to change this behavior, nevertheless, simply decrease (or perhaps increase) the value that you pass to the [`Auth` constructor](#creating-a-new-instance) as the argument named `$sessionResyncInterval`.
#### Taking roles away from users #### Taking roles away from users
```php ```php
@@ -959,6 +965,8 @@ catch (\Delight\Auth\AmbiguousUsernameException $e) {
} }
``` ```
**Note:** Changes to a users set of roles take effect in the local session immediately, as expected. In other sessions (e.g. on other devices), the changes may need up to five minutes to take effect, though. This increases performance and usually poses no problem. If you want to change this behavior, nevertheless, simply decrease (or perhaps increase) the value that you pass to the [`Auth` constructor](#creating-a-new-instance) as the argument named `$sessionResyncInterval`.
#### Checking roles #### Checking roles
```php ```php

View File

@@ -270,8 +270,11 @@ final class Administration extends UserManager {
* @see Role * @see Role
*/ */
public function doesUserHaveRole($userId, $role) { public function doesUserHaveRole($userId, $role) {
if (empty($role) || !\is_numeric($role)) {
return false;
}
$userId = (int) $userId; $userId = (int) $userId;
$role = (int) $role;
$rolesBitmask = $this->db->selectValue( $rolesBitmask = $this->db->selectValue(
'SELECT roles_mask FROM ' . $this->dbTablePrefix . 'users WHERE id = ?', 'SELECT roles_mask FROM ' . $this->dbTablePrefix . 'users WHERE id = ?',
@@ -282,6 +285,8 @@ final class Administration extends UserManager {
throw new UnknownIdException(); throw new UnknownIdException();
} }
$role = (int) $role;
return ($rolesBitmask & $role) === $role; return ($rolesBitmask & $role) === $role;
} }

View File

@@ -1563,9 +1563,13 @@ final class Auth extends UserManager {
* @see Role * @see Role
*/ */
public function hasRole($role) { public function hasRole($role) {
$role = (int) $role; if (empty($role) || !\is_numeric($role)) {
return false;
}
if (isset($_SESSION) && isset($_SESSION[self::SESSION_FIELD_ROLES])) { if (isset($_SESSION) && isset($_SESSION[self::SESSION_FIELD_ROLES])) {
$role = (int) $role;
return (((int) $_SESSION[self::SESSION_FIELD_ROLES]) & $role) === $role; return (((int) $_SESSION[self::SESSION_FIELD_ROLES]) & $role) === $role;
} }
else { else {