Path: blob/1.0-develop/app/Http/Controllers/Admin/ApiController.php
10279 views
<?php12namespace Pterodactyl\Http\Controllers\Admin;34use Illuminate\View\View;5use Illuminate\Http\Request;6use Illuminate\Http\Response;7use Pterodactyl\Models\ApiKey;8use Illuminate\Http\RedirectResponse;9use Prologue\Alerts\AlertsMessageBag;10use Pterodactyl\Services\Acl\Api\AdminAcl;11use Pterodactyl\Http\Controllers\Controller;12use Pterodactyl\Services\Api\KeyCreationService;13use Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface;14use Pterodactyl\Http\Requests\Admin\Api\StoreApplicationApiKeyRequest;1516class ApiController extends Controller17{18/**19* ApiController constructor.20*/21public function __construct(22private AlertsMessageBag $alert,23private ApiKeyRepositoryInterface $repository,24private KeyCreationService $keyCreationService,25) {26}2728/**29* Render view showing all of a user's application API keys.30*/31public function index(Request $request): View32{33return view('admin.api.index', [34'keys' => $this->repository->getApplicationKeys($request->user()),35]);36}3738/**39* Render view allowing an admin to create a new application API key.40*41* @throws \ReflectionException42*/43public function create(): View44{45$resources = AdminAcl::getResourceList();46sort($resources);4748return view('admin.api.new', [49'resources' => $resources,50'permissions' => [51'r' => AdminAcl::READ,52'rw' => AdminAcl::READ | AdminAcl::WRITE,53'n' => AdminAcl::NONE,54],55]);56}5758/**59* Store the new key and redirect the user back to the application key listing.60*61* @throws \Pterodactyl\Exceptions\Model\DataValidationException62*/63public function store(StoreApplicationApiKeyRequest $request): RedirectResponse64{65$this->keyCreationService->setKeyType(ApiKey::TYPE_APPLICATION)->handle([66'memo' => $request->input('memo'),67'user_id' => $request->user()->id,68], $request->getKeyPermissions());6970$this->alert->success('A new application API key has been generated for your account.')->flash();7172return redirect()->route('admin.api.index');73}7475/**76* Delete an application API key from the database.77*/78public function delete(Request $request, string $identifier): Response79{80$this->repository->deleteApplicationKey($request->user(), $identifier);8182return response('', 204);83}84}858687