summaryrefslogtreecommitdiff
path: root/src/Models/User.php
diff options
context:
space:
mode:
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(