Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Models/Traits/HasAccessTokens.php
7460 views
1
<?php
2
3
namespace Pterodactyl\Models\Traits;
4
5
use Illuminate\Support\Str;
6
use Laravel\Sanctum\Sanctum;
7
use Pterodactyl\Models\ApiKey;
8
use Laravel\Sanctum\HasApiTokens;
9
use Illuminate\Database\Eloquent\Relations\HasMany;
10
use Pterodactyl\Extensions\Laravel\Sanctum\NewAccessToken;
11
12
/**
13
* @mixin \Pterodactyl\Models\Model
14
*/
15
trait HasAccessTokens
16
{
17
use HasApiTokens {
18
tokens as private _tokens;
19
createToken as private _createToken;
20
}
21
22
public function tokens(): HasMany
23
{
24
return $this->hasMany(Sanctum::$personalAccessTokenModel);
25
}
26
27
public function createToken(?string $memo, ?array $ips): NewAccessToken
28
{
29
/** @var ApiKey $token */
30
$token = $this->tokens()->forceCreate([
31
'user_id' => $this->id,
32
'key_type' => ApiKey::TYPE_ACCOUNT,
33
'identifier' => ApiKey::generateTokenIdentifier(ApiKey::TYPE_ACCOUNT),
34
'token' => encrypt($plain = Str::random(ApiKey::KEY_LENGTH)),
35
'memo' => $memo ?? '',
36
'allowed_ips' => $ips ?? [],
37
]);
38
39
return new NewAccessToken($token, $plain);
40
}
41
}
42
43