Skip to content

Commit 48065d0

Browse files
committed
Fix calls to token repository
1 parent d7e4830 commit 48065d0

3 files changed

Lines changed: 67 additions & 4 deletions

File tree

ProcessMaker/Http/Controllers/Api/UserTokenController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public function index(Request $request, User $user)
9292
throw new AuthorizationException(__('Not authorized to update this user.'));
9393
}
9494

95-
$tokens = $this->tokenRepository->forUser($user->id);
95+
$tokens = $this->tokenRepository->forUser($user);
9696

9797
$results = $tokens->load('client')->filter(function ($token) {
9898
return $token->client->personal_access_client && !$token->revoked;
@@ -202,7 +202,7 @@ public function show(Request $request, User $user, $tokenId)
202202

203203
$token = $this->tokenRepository->findForUser(
204204
$tokenId,
205-
$user->getKey()
205+
$user
206206
);
207207

208208
if (is_null($token)) {
@@ -256,7 +256,7 @@ public function destroy(Request $request, User $user, $tokenId)
256256

257257
$token = $this->tokenRepository->findForUser(
258258
$tokenId,
259-
$user->getKey()
259+
$user
260260
);
261261

262262
if (is_null($token)) {

ProcessMaker/Http/Resources/UserTokenResource.php

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,66 @@
22

33
namespace ProcessMaker\Http\Resources;
44

5-
use Illuminate\Http\Resources\Json\ResourceCollection;
5+
use Illuminate\Http\Request;
6+
use Laravel\Passport\PersonalAccessTokenResult;
7+
use Laravel\Passport\Token;
68

79
class UserTokenResource extends ApiResource
810
{
11+
/**
12+
* Transform the resource into an array.
13+
*
14+
* @param Request $request
15+
* @return array
16+
*/
17+
public function toArray($request)
18+
{
19+
// Handle PersonalAccessTokenResult (from token creation)
20+
if ($this->resource instanceof PersonalAccessTokenResult) {
21+
$token = $this->resource->getToken();
22+
23+
return [
24+
'accessToken' => $this->resource->accessToken,
25+
'token' => $this->formatTokenModel($token),
26+
];
27+
}
28+
29+
// Handle Token model (from token retrieval)
30+
if ($this->resource instanceof Token) {
31+
return $this->formatTokenModel($this->resource);
32+
}
33+
34+
// Fallback to parent implementation
35+
return parent::toArray($request);
36+
}
37+
38+
/**
39+
* Format the token model into the expected array structure.
40+
*
41+
* @param Token $token
42+
* @return array
43+
*/
44+
protected function formatTokenModel(Token $token): array
45+
{
46+
// Ensure scopes is always an array
47+
$scopes = $token->scopes;
48+
if (is_string($scopes)) {
49+
$scopes = json_decode($scopes, true) ?? [];
50+
}
51+
if (!is_array($scopes)) {
52+
$scopes = [];
53+
}
54+
55+
return [
56+
'id' => $token->id,
57+
'user_id' => $token->user_id,
58+
'client_id' => $token->client_id,
59+
'name' => $token->name,
60+
'scopes' => $scopes,
61+
'revoked' => (bool) $token->revoked,
62+
'created_at' => $token->created_at ? $token->created_at->toIso8601String() : null,
63+
'updated_at' => $token->updated_at ? $token->updated_at->toIso8601String() : null,
64+
'expires_at' => $token->expires_at ? $token->expires_at->toIso8601String() : null,
65+
];
66+
}
967
}

phpunit.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
colors="true"
66
testdox="true"
77
extensionsDirectory="tests/Extensions"
8+
displayDetailsOnTestsThatTriggerDeprecations="true"
9+
displayDetailsOnTestsThatTriggerErrors="true"
10+
displayDetailsOnTestsThatTriggerNotices="true"
11+
displayDetailsOnTestsThatTriggerWarnings="true"
12+
displayDetailsOnPhpunitDeprecations="true"
813
>
914
<testsuites>
1015
<testsuite name="Features">

0 commit comments

Comments
 (0)