Path: blob/1.0-develop/app/Http/Controllers/Admin/ApiController.php
14044 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\Http\Requests\Admin\Api\StoreApplicationApiKeyRequest;1415class ApiController extends Controller16{17/**18* ApiController constructor.19*/20public function __construct(21private AlertsMessageBag $alert,22private KeyCreationService $keyCreationService,23) {24}2526/**27* Render view showing all of a user's application API keys.28*/29public function index(Request $request): View30{31return view('admin.api.index', [32'keys' => ApiKey::query()->where('key_type', ApiKey::TYPE_APPLICATION)->get(),33]);34}3536/**37* Render view allowing an admin to create a new application API key.38*39* @throws \ReflectionException40*/41public function create(): View42{43$resources = AdminAcl::getResourceList();44sort($resources);4546return view('admin.api.new', [47'resources' => $resources,48'permissions' => [49'r' => AdminAcl::READ,50'rw' => AdminAcl::READ | AdminAcl::WRITE,51'n' => AdminAcl::NONE,52],53]);54}5556/**57* Store the new key and redirect the user back to the application key listing.58*59* @throws \Pterodactyl\Exceptions\Model\DataValidationException60*/61public function store(StoreApplicationApiKeyRequest $request): RedirectResponse62{63$this->keyCreationService->setKeyType(ApiKey::TYPE_APPLICATION)->handle([64'memo' => $request->input('memo'),65'user_id' => $request->user()->id,66], $request->getKeyPermissions());6768$this->alert->success('A new application API key has been generated for your account.')->flash();6970return redirect()->route('admin.api.index');71}7273/**74* Delete an application API key from the database.75*/76public function delete(Request $request, string $identifier): Response77{78ApiKey::query()79->where('key_type', ApiKey::TYPE_APPLICATION)80->where('identifier', $identifier)81->delete();8283return response('', 204);84}85}868788