* Validate a remember-me token and return its stored payload. * * @param string $token * @return array|null Returns ['username'=>…, 'expiry'=>…] or null if invalid/expired. */
(string $token)
| 600 | * @return array|null Returns ['username'=>…, 'expiry'=>…] or null if invalid/expired. |
| 601 | */ |
| 602 | public static function validateRememberToken(string $token): ?array |
| 603 | { |
| 604 | $all = self::loadRememberTokenStore(); |
| 605 | if (!$all) { |
| 606 | return null; |
| 607 | } |
| 608 | |
| 609 | $hash = self::rememberTokenHash($token); |
| 610 | $payload = $all[$hash] ?? ($all[$token] ?? null); |
| 611 | if (empty($payload) || !isset($payload['expiry']) || $payload['expiry'] < time()) { |
| 612 | if (!empty($payload)) { |
| 613 | unset($all[$hash], $all[$token]); |
| 614 | self::saveRememberTokenStore($all); |
| 615 | } |
| 616 | return null; |
| 617 | } |
| 618 | |
| 619 | $username = (string)($payload['username'] ?? ''); |
| 620 | if ($username === '' || !self::userExists($username)) { |
| 621 | unset($all[$hash], $all[$token]); |
| 622 | self::saveRememberTokenStore($all); |
| 623 | return null; |
| 624 | } |
| 625 | |
| 626 | return $payload; |
| 627 | } |
| 628 | |
| 629 | /** |
| 630 | * Validate and rotate a remember-me token. |
no test coverage detected