Path: blob/1.0-develop/app/Http/Controllers/Api/Client/ApiKeyController.php
10279 views
<?php12namespace Pterodactyl\Http\Controllers\Api\Client;34use Pterodactyl\Models\ApiKey;5use Illuminate\Http\JsonResponse;6use Pterodactyl\Facades\Activity;7use Pterodactyl\Exceptions\DisplayException;8use Pterodactyl\Http\Requests\Api\Client\ClientApiRequest;9use Pterodactyl\Transformers\Api\Client\ApiKeyTransformer;10use Pterodactyl\Http\Requests\Api\Client\Account\StoreApiKeyRequest;1112class ApiKeyController extends ClientApiController13{14/**15* Returns all the API keys that exist for the given client.16*/17public function index(ClientApiRequest $request): array18{19return $this->fractal->collection($request->user()->apiKeys)20->transformWith($this->getTransformer(ApiKeyTransformer::class))21->toArray();22}2324/**25* Store a new API key for a user's account.26*27* @throws DisplayException28*/29public function store(StoreApiKeyRequest $request): array30{31if ($request->user()->apiKeys->count() >= 25) {32throw new DisplayException('You have reached the account limit for number of API keys.');33}3435$token = $request->user()->createToken(36$request->input('description'),37$request->input('allowed_ips')38);3940Activity::event('user:api-key.create')41->subject($token->accessToken)42->property('identifier', $token->accessToken->identifier)43->log();4445return $this->fractal->item($token->accessToken)46->transformWith($this->getTransformer(ApiKeyTransformer::class))47->addMeta(['secret_token' => $token->plainTextToken])48->toArray();49}5051/**52* Deletes a given API key.53*/54public function delete(ClientApiRequest $request, string $identifier): JsonResponse55{56/** @var ApiKey $key */57$key = $request->user()->apiKeys()58->where('key_type', ApiKey::TYPE_ACCOUNT)59->where('identifier', $identifier)60->firstOrFail();6162Activity::event('user:api-key.delete')63->property('identifier', $key->identifier)64->log();6566$key->delete();6768return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT);69}70}717273