Path: blob/1.0-develop/app/Models/Traits/HasAccessTokens.php
10259 views
<?php12namespace Pterodactyl\Models\Traits;34use Illuminate\Support\Str;5use Laravel\Sanctum\Sanctum;6use Pterodactyl\Models\ApiKey;7use Laravel\Sanctum\HasApiTokens;8use Illuminate\Database\Eloquent\Relations\HasMany;9use Pterodactyl\Extensions\Laravel\Sanctum\NewAccessToken;1011/**12* @template TToken of \Laravel\Sanctum\Contracts\HasAbilities13*14* @mixin \Pterodactyl\Models\Model15*/16trait HasAccessTokens17{18/** @use \Laravel\Sanctum\HasApiTokens<TToken> */19use HasApiTokens {20tokens as private _tokens;21createToken as private _createToken;22}2324public function tokens(): HasMany25{26return $this->hasMany(Sanctum::$personalAccessTokenModel);27}2829public function createToken(?string $memo, ?array $ips): NewAccessToken30{31/** @var ApiKey $token */32$token = $this->tokens()->forceCreate([33'user_id' => $this->id,34'key_type' => ApiKey::TYPE_ACCOUNT,35'identifier' => ApiKey::generateTokenIdentifier(ApiKey::TYPE_ACCOUNT),36'token' => encrypt($plain = Str::random(ApiKey::KEY_LENGTH)),37'memo' => $memo ?? '',38'allowed_ips' => $ips ?? [],39]);4041return new NewAccessToken($token, $plain);42}43}444546