Update access token generation to return more useful class
This commit is contained in:
parent
fdd90b3be7
commit
9e0ec8fca8
|
@ -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
|
// TODO: this should accept an array of different scopes to apply as permissions
|
||||||
// for the token. Right now it allows any account level permission.
|
// 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)
|
->transformWith(PersonalAccessTokenTransformer::class)
|
||||||
->addMeta([
|
->addMeta([
|
||||||
'secret_token' => $plaintext,
|
'secret_token' => $token->plainTextToken,
|
||||||
])
|
])
|
||||||
->toArray();
|
->toArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,9 @@ namespace Pterodactyl\Http\Requests\Api;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method \Pterodactyl\Models\User user($guard = null)
|
||||||
|
*/
|
||||||
abstract class ApiRequest extends FormRequest
|
abstract class ApiRequest extends FormRequest
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,6 +5,7 @@ namespace Pterodactyl\Models\Traits;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
use Pterodactyl\Models\PersonalAccessToken;
|
use Pterodactyl\Models\PersonalAccessToken;
|
||||||
|
use Pterodactyl\Extensions\Laravel\Sanctum\NewAccessToken;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @mixin \Pterodactyl\Models\Model
|
* @mixin \Pterodactyl\Models\Model
|
||||||
|
@ -24,12 +25,8 @@ trait HasAccessTokens
|
||||||
/**
|
/**
|
||||||
* Creates a new personal access token for the user. The token will be returned
|
* 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.
|
* 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 */
|
/** @var \Pterodactyl\Models\PersonalAccessToken $token */
|
||||||
$token = $this->tokens()->create([
|
$token = $this->tokens()->create([
|
||||||
|
@ -40,6 +37,6 @@ trait HasAccessTokens
|
||||||
'abilities' => $abilities,
|
'abilities' => $abilities,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return [$token, $token->token_id . $plain];
|
return new NewAccessToken($token, $token->token_id . $plain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue