diff options
| author | Daniel Weipert <git@mail.dweipert.de> | 2025-12-13 16:27:53 +0100 |
|---|---|---|
| committer | Daniel Weipert <git@mail.dweipert.de> | 2025-12-13 16:27:53 +0100 |
| commit | 2386148b8f048ba40d9f26cc97898bdcdc778ea2 (patch) | |
| tree | 48ca45de3dc6133cb0225eba8c5917f813082b2b /src/Models/User.php | |
| parent | b19a8f63ad727a3633885d3f2b81edf8181a53b9 (diff) | |
Diffstat (limited to 'src/Models/User.php')
| -rw-r--r-- | src/Models/User.php | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Models/User.php b/src/Models/User.php index 423394a..c0c73f8 100644 --- a/src/Models/User.php +++ b/src/Models/User.php @@ -3,7 +3,9 @@ namespace App\Models; use App\Database; +use App\Errors\UnauthorizedError; use App\Support\ConnectsToDatabase; +use Symfony\Component\HttpFoundation\Request; class User implements ConnectsToDatabase { @@ -50,7 +52,7 @@ class User implements ConnectsToDatabase return self::fromDatabase($row); } - public static function fetchWithAccessToken(string $accessToken): ?static + public static function fetchWithAccessToken(string $accessToken): ?self { $row = Database::getInstance()->query(<<<SQL select users.* from users left join tokens on tokens.user_id = users.id where tokens.access_token=:access_token @@ -70,6 +72,18 @@ class User implements ConnectsToDatabase return new self($id); } + public static function authenticateWithRequest(Request $request): self + { + $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: ""); + $user = self::fetchWithAccessToken($accessToken); + + if (empty($user)) { + throw new UnauthorizedError(); + } + + return $user; + } + public function insert(): bool { return !! Database::getInstance()->query( |
