summaryrefslogtreecommitdiff
path: root/src/Controllers
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/Controllers
parentb19a8f63ad727a3633885d3f2b81edf8181a53b9 (diff)
matrix specification splitHEADmain
Diffstat (limited to 'src/Controllers')
-rwxr-xr-xsrc/Controllers/AccountController.php18
-rw-r--r--src/Controllers/KeyController.php31
-rw-r--r--src/Controllers/LoginController.php44
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,
+ ));
}
}