summaryrefslogtreecommitdiff
path: root/src/Models/User.php
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-12-13 16:27:53 +0100
committerDaniel Weipert <git@mail.dweipert.de>2025-12-13 16:27:53 +0100
commit2386148b8f048ba40d9f26cc97898bdcdc778ea2 (patch)
tree48ca45de3dc6133cb0225eba8c5917f813082b2b /src/Models/User.php
parentb19a8f63ad727a3633885d3f2b81edf8181a53b9 (diff)
matrix specification splitHEADmain
Diffstat (limited to 'src/Models/User.php')
-rw-r--r--src/Models/User.php16
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(