Path: blob/1.0-develop/app/Http/Controllers/Admin/NodeAutoDeployController.php
14044 views
<?php12namespace Pterodactyl\Http\Controllers\Admin;34use Illuminate\Http\Request;5use Pterodactyl\Models\Node;6use Pterodactyl\Models\ApiKey;7use Illuminate\Http\JsonResponse;8use Pterodactyl\Http\Controllers\Controller;9use Illuminate\Contracts\Encryption\Encrypter;10use Pterodactyl\Services\Api\KeyCreationService;1112class NodeAutoDeployController extends Controller13{14/**15* NodeAutoDeployController constructor.16*/17public function __construct(18private Encrypter $encrypter,19private KeyCreationService $keyCreationService,20) {21}2223/**24* Generates a new API key for the logged-in user with only permission to read25* nodes, and returns that as the deployment key for a node.26*27* @throws \Pterodactyl\Exceptions\Model\DataValidationException28*/29public function __invoke(Request $request, Node $node): JsonResponse30{31$key = ApiKey::query()32->where('user_id', $request->user()->id)33->where('key_type', ApiKey::TYPE_APPLICATION)34->where('r_nodes', 1)35->first();3637// We couldn't find a key that exists for this user with only permission for38// reading nodes. Go ahead and create it now.39if (!$key) {40$key = $this->keyCreationService->setKeyType(ApiKey::TYPE_APPLICATION)->handle([41'user_id' => $request->user()->id,42'memo' => 'Automatically generated node deployment key.',43'allowed_ips' => [],44], ['r_nodes' => 1]);45}4647return new JsonResponse([48'node' => $node->id,49'token' => $key->identifier . $this->encrypter->decrypt($key->token),50]);51}52}535455