diff options
Diffstat (limited to 'src/Controllers')
| -rwxr-xr-x | src/Controllers/AccountController.php | 18 | ||||
| -rw-r--r-- | src/Controllers/KeyController.php | 31 | ||||
| -rw-r--r-- | src/Controllers/LoginController.php | 44 |
3 files changed, 40 insertions, 53 deletions
diff --git a/src/Controllers/AccountController.php b/src/Controllers/AccountController.php index 858a6b5..8e20880 100755 --- a/src/Controllers/AccountController.php +++ b/src/Controllers/AccountController.php @@ -2,9 +2,9 @@ namespace App\Controllers; -use App\Errors\UnauthorizedError; use App\Models\Device; use App\Models\User; +use Matrix\Responses\ClientAccountWhoamiGetResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -18,18 +18,12 @@ class AccountController */ public function whoami(Request $request): Response { - $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: ""); - $user = User::fetchWithAccessToken($accessToken); - - if (empty($user)) { - throw new UnauthorizedError(); - } - + $user = User::authenticateWithRequest($request); $device = Device::fetch(userId: $user->getId()); - return new JsonResponse([ - "device_id" => $device->getId(), - "user_id" => $user->getId(), - ]); + return new JsonResponse(new ClientAccountWhoamiGetResponse( + userId: $user->getId(), + deviceId: $device->getId(), + )); } } diff --git a/src/Controllers/KeyController.php b/src/Controllers/KeyController.php index a8b4fb1..7777229 100644 --- a/src/Controllers/KeyController.php +++ b/src/Controllers/KeyController.php @@ -4,10 +4,11 @@ namespace App\Controllers; use App\Errors\AppException; use App\Errors\ErrorCode; -use App\Errors\UnauthorizedError; use App\Models\Tokens; use App\Models\User; use App\Support\RequestValidator; +use Matrix\Responses\ClientKeysUploadPostResponse; +use Matrix\Responses\ClientRefreshPostResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -29,22 +30,14 @@ class KeyController */ public function upload(Request $request): Response { - $accessToken = str_replace("Bearer ", "", $request->headers->get("authorization") ?: ""); - $user = User::fetchWithAccessToken($accessToken); - - if (empty($user)) { - throw new UnauthorizedError(); - } - + $user = User::authenticateWithRequest($request); $body = json_decode($request->getContent(), true); RequestValidator::validateJson(); - return new JsonResponse([ - "one_time_key_counts" => [ - "curve25519" => 0, - "signed_curve25519" => count($body["one_time_keys"]) - ], - ]); + return new JsonResponse(new ClientKeysUploadPostResponse([ + "curve25519" => 0, + "signed_curve25519" => count($body["one_time_keys"]), + ])); } public function query(Request $request): Response @@ -74,10 +67,10 @@ class KeyController $newTokens = Tokens::new($tokens->getUserId(), $tokens->getDeviceId()); $newTokens->insert(); - return new JsonResponse([ - "access_token" => $newTokens->getAccessToken(), - "expires_in" => $newTokens->getExpiresIn(), - "refresh_token" => $newTokens->getRefreshToken(), - ]); + return new JsonResponse(new ClientRefreshPostResponse( + accessToken: $newTokens->getAccessToken(), + expiresInMilliseconds: $newTokens->getExpiresIn(), + refreshToken: $newTokens->getRefreshToken(), + )); } } diff --git a/src/Controllers/LoginController.php b/src/Controllers/LoginController.php index 15f1583..c520e25 100644 --- a/src/Controllers/LoginController.php +++ b/src/Controllers/LoginController.php @@ -10,9 +10,12 @@ use App\Models\Device; use App\Models\Tokens; use App\Models\User; use App\Support\RequestValidator; -use App\Types\LoginFlow; -use App\Types\LoginType; use App\Types\UserRegistrationKind; +use Matrix\Data\LoginFlow; +use Matrix\Enums\LoginType; +use Matrix\Responses\ClientLoginGetResponse; +use Matrix\Responses\ClientLoginPostResponse; +use Matrix\Responses\ClientRegisterPostResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -24,11 +27,9 @@ class LoginController */ public function supportedLoginTypes(Request $request): Response { - return new JsonResponse([ - "flows" => [ - (new LoginFlow(LoginType::PASSWORD))->toArray(), - ], - ]); + return new JsonResponse(new ClientLoginGetResponse([ + (new LoginFlow(LoginType::PASSWORD)), + ])); } /** @@ -87,14 +88,13 @@ class LoginController } } - return new JsonResponse([ - "access_token" => $tokens->getAccessToken(), - "device_id" => $device->getId(), - "expires_in_ms" => $tokens->getExpiresIn(), - "refresh_token" => $tokens->getRefreshToken(), - "user_id" => $user->getId(), - #"well_known" => [], - ]); + return new JsonResponse(new ClientLoginPostResponse( + accessToken: $tokens->getAccessToken(), + deviceId:$device->getId(), + userId: $user->getId(), + expiresInMilliseconds: $tokens->getExpiresIn(), + refreshToken: $tokens->getRefreshToken(), + )); } /** @@ -130,12 +130,12 @@ class LoginController $tokens = Tokens::new($userId, $device->getId()); $tokens->insert(); - return new JsonResponse([ - "access_token" => $tokens->getAccessToken(), - "device_id" => $device->getId(), - "expires_in_ms" => $tokens->getExpiresIn(), - "refresh_token" => $tokens->getRefreshToken(), - "user_id" => $userId, - ]); + return new JsonResponse(new ClientRegisterPostResponse( + accessToken: $tokens->getAccessToken(), + deviceId: $device->getId(), + expiresInMilliseconds: $tokens->getExpiresIn(), + refreshToken: $tokens->getRefreshToken(), + userId: $userId, + )); } } |
