Update access token generation to return more useful class
This commit is contained in:
parent
fdd90b3be7
commit
9e0ec8fca8
4 changed files with 32 additions and 9 deletions
23
app/Extensions/Laravel/Sanctum/NewAccessToken.php
Normal file
23
app/Extensions/Laravel/Sanctum/NewAccessToken.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Extensions\Laravel\Sanctum;
|
||||
|
||||
use Pterodactyl\Models\PersonalAccessToken;
|
||||
use Laravel\Sanctum\NewAccessToken as SanctumAccessToken;
|
||||
|
||||
/**
|
||||
* @property \Pterodactyl\Models\PersonalAccessToken $accessToken
|
||||
*/
|
||||
class NewAccessToken extends SanctumAccessToken
|
||||
{
|
||||
/**
|
||||
* NewAccessToken constructor.
|
||||
*
|
||||
* @noinspection PhpMissingParentConstructorInspection
|
||||
*/
|
||||
public function __construct(PersonalAccessToken $accessToken, string $plainTextToken)
|
||||
{
|
||||
$this->accessToken = $accessToken;
|
||||
$this->plainTextToken = $plainTextToken;
|
||||
}
|
||||
}
|
|
@ -37,12 +37,12 @@ class ApiKeyController extends ClientApiController
|
|||
|
||||
// TODO: this should accept an array of different scopes to apply as permissions
|
||||
// for the token. Right now it allows any account level permission.
|
||||
[$token, $plaintext] = $request->user()->createToken($request->input('description'));
|
||||
$token = $request->user()->createToken($request->input('description'));
|
||||
|
||||
return $this->fractal->item($token)
|
||||
return $this->fractal->item($token->accessToken)
|
||||
->transformWith(PersonalAccessTokenTransformer::class)
|
||||
->addMeta([
|
||||
'secret_token' => $plaintext,
|
||||
'secret_token' => $token->plainTextToken,
|
||||
])
|
||||
->toArray();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@ namespace Pterodactyl\Http\Requests\Api;
|
|||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* @method \Pterodactyl\Models\User user($guard = null)
|
||||
*/
|
||||
abstract class ApiRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace Pterodactyl\Models\Traits;
|
|||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
use Pterodactyl\Models\PersonalAccessToken;
|
||||
use Pterodactyl\Extensions\Laravel\Sanctum\NewAccessToken;
|
||||
|
||||
/**
|
||||
* @mixin \Pterodactyl\Models\Model
|
||||
|
@ -24,12 +25,8 @@ trait HasAccessTokens
|
|||
/**
|
||||
* Creates a new personal access token for the user. The token will be returned
|
||||
* as the first element of the array, and the plain-text token will be the second.
|
||||
*
|
||||
* @param string $description
|
||||
* @param string[] $abilities
|
||||
* @return array
|
||||
*/
|
||||
public function createToken(string $description, array $abilities = ['*']): array
|
||||
public function createToken(string $description, array $abilities = ['*']): NewAccessToken
|
||||
{
|
||||
/** @var \Pterodactyl\Models\PersonalAccessToken $token */
|
||||
$token = $this->tokens()->create([
|
||||
|
@ -40,6 +37,6 @@ trait HasAccessTokens
|
|||
'abilities' => $abilities,
|
||||
]);
|
||||
|
||||
return [$token, $token->token_id . $plain];
|
||||
return new NewAccessToken($token, $token->token_id . $plain);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue