Page MenuHomePhorge

D5388.1775226049.diff
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

D5388.1775226049.diff

diff --git a/src/app/Http/Controllers/API/AuthController.php b/src/app/Http/Controllers/API/AuthController.php
--- a/src/app/Http/Controllers/API/AuthController.php
+++ b/src/app/Http/Controllers/API/AuthController.php
@@ -45,6 +45,8 @@
*/
public static function logonResponse(User $user, string $password, ?string $secondFactor = null)
{
+ $mode = request()->mode; // have to be before we make a request below
+
$proxyRequest = Request::create('/oauth/token', 'POST', [
'username' => $user->email,
'password' => $password,
@@ -58,7 +60,7 @@
$tokenResponse = app()->handle($proxyRequest);
- return self::respondWithToken($tokenResponse, $user);
+ return self::respondWithToken($tokenResponse, $user, $mode);
}
/**
@@ -210,10 +212,11 @@
*
* @param Response $tokenResponse the response containing the token
* @param ?User $user The user being authenticated
+ * @param ?bool $mode Response mode: 'fast' - return minimum set of user data
*
* @return JsonResponse
*/
- protected static function respondWithToken($tokenResponse, $user = null)
+ protected static function respondWithToken($tokenResponse, $user = null, $mode = null)
{
$data = json_decode($tokenResponse->getContent());
@@ -227,10 +230,14 @@
return response()->json(['status' => 'error', 'message' => self::trans('auth.failed')], 401);
}
+ $response = [];
+
if ($user) {
- $response = V4\UsersController::userResponse($user);
- } else {
- $response = [];
+ if ($mode == 'fast') {
+ $response['id'] = $user->id;
+ } else {
+ $response = V4\UsersController::userResponse($user);
+ }
}
$response['status'] = 'success';
diff --git a/src/tests/Feature/Controller/AuthTest.php b/src/tests/Feature/Controller/AuthTest.php
--- a/src/tests/Feature/Controller/AuthTest.php
+++ b/src/tests/Feature/Controller/AuthTest.php
@@ -199,6 +199,17 @@
);
$this->assertSame('bearer', $json['token_type']);
+ // No user info in the response
+ $post['mode'] = 'fast';
+ $response = $this->post("api/auth/login", $post);
+ $json = $response->json();
+
+ $this->assertTrue(!empty($json['id']));
+ $this->assertTrue(!empty($json['access_token']));
+ $this->assertTrue(empty($json['settings']));
+ $this->assertTrue(empty($json['statusInfo']));
+ $this->assertTrue(empty($json['wallets']));
+
// TODO: We have browser tests for 2FA but we should probably also test it here
return $json['access_token'];

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 3, 2:20 PM (6 h, 14 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18824293
Default Alt Text
D5388.1775226049.diff (2 KB)

Event Timeline