|
2 | 2 |
|
3 | 3 | namespace Pterodactyl\Http\Controllers\Base; |
4 | 4 |
|
| 5 | +use Illuminate\View\View; |
5 | 6 | use Illuminate\Http\Request; |
| 7 | +use Illuminate\Http\Response; |
| 8 | +use Pterodactyl\Models\ApiKey; |
6 | 9 | use Prologue\Alerts\AlertsMessageBag; |
7 | 10 | use Pterodactyl\Http\Controllers\Controller; |
8 | 11 | use Pterodactyl\Services\Api\KeyCreationService; |
9 | | -use Pterodactyl\Http\Requests\Base\ApiKeyFormRequest; |
| 12 | +use Pterodactyl\Http\Requests\Base\StoreAccountKeyRequest; |
10 | 13 | use Pterodactyl\Contracts\Repository\ApiKeyRepositoryInterface; |
11 | 14 |
|
12 | | -class APIController extends Controller |
| 15 | +class AccountKeyController extends Controller |
13 | 16 | { |
14 | 17 | /** |
15 | 18 | * @var \Prologue\Alerts\AlertsMessageBag |
@@ -44,68 +47,60 @@ public function __construct( |
44 | 47 | } |
45 | 48 |
|
46 | 49 | /** |
47 | | - * Display base API index page. |
| 50 | + * Display a listing of all account API keys. |
48 | 51 | * |
49 | 52 | * @param \Illuminate\Http\Request $request |
50 | 53 | * @return \Illuminate\View\View |
51 | 54 | */ |
52 | | - public function index(Request $request) |
| 55 | + public function index(Request $request): View |
53 | 56 | { |
54 | 57 | return view('base.api.index', [ |
55 | | - 'keys' => $this->repository->findWhere([['user_id', '=', $request->user()->id]]), |
| 58 | + 'keys' => $this->repository->getAccountKeys($request->user()), |
56 | 59 | ]); |
57 | 60 | } |
58 | 61 |
|
59 | 62 | /** |
60 | | - * Display API key creation page. |
| 63 | + * Display account API key creation page. |
61 | 64 | * |
62 | 65 | * @param \Illuminate\Http\Request $request |
63 | 66 | * @return \Illuminate\View\View |
64 | 67 | */ |
65 | | - public function create(Request $request) |
| 68 | + public function create(Request $request): View |
66 | 69 | { |
| 70 | + return view('base.api.new'); |
67 | 71 | } |
68 | 72 |
|
69 | 73 | /** |
70 | | - * Handle saving new API key. |
| 74 | + * Handle saving new account API key. |
71 | 75 | * |
72 | | - * @param \Pterodactyl\Http\Requests\Base\ApiKeyFormRequest $request |
| 76 | + * @param \Pterodactyl\Http\Requests\Base\StoreAccountKeyRequest $request |
73 | 77 | * @return \Illuminate\Http\RedirectResponse |
74 | 78 | * |
75 | | - * @throws \Exception |
76 | 79 | * @throws \Pterodactyl\Exceptions\Model\DataValidationException |
77 | 80 | */ |
78 | | - public function store(ApiKeyFormRequest $request) |
| 81 | + public function store(StoreAccountKeyRequest $request) |
79 | 82 | { |
80 | | - $adminPermissions = []; |
81 | | - if ($request->user()->root_admin) { |
82 | | - $adminPermissions = $request->input('admin_permissions', []); |
83 | | - } |
84 | | - |
85 | | - $secret = $this->keyService->handle([ |
| 83 | + $this->keyService->setKeyType(ApiKey::TYPE_ACCOUNT)->handle([ |
86 | 84 | 'user_id' => $request->user()->id, |
87 | 85 | 'allowed_ips' => $request->input('allowed_ips'), |
88 | 86 | 'memo' => $request->input('memo'), |
89 | | - ], $request->input('permissions', []), $adminPermissions); |
| 87 | + ]); |
90 | 88 |
|
91 | 89 | $this->alert->success(trans('base.api.index.keypair_created'))->flash(); |
92 | 90 |
|
93 | 91 | return redirect()->route('account.api'); |
94 | 92 | } |
95 | 93 |
|
96 | 94 | /** |
| 95 | + * Delete an account API key from the Panel via an AJAX request. |
| 96 | + * |
97 | 97 | * @param \Illuminate\Http\Request $request |
98 | | - * @param string $key |
| 98 | + * @param string $identifier |
99 | 99 | * @return \Illuminate\Http\Response |
100 | | - * |
101 | | - * @throws \Exception |
102 | 100 | */ |
103 | | - public function revoke(Request $request, $key) |
| 101 | + public function revoke(Request $request, string $identifier): Response |
104 | 102 | { |
105 | | - $this->repository->deleteWhere([ |
106 | | - ['user_id', '=', $request->user()->id], |
107 | | - ['token', '=', $key], |
108 | | - ]); |
| 103 | + $this->repository->deleteAccountKey($request->user(), $identifier); |
109 | 104 |
|
110 | 105 | return response('', 204); |
111 | 106 | } |
|
0 commit comments