Skip to content

Commit 8953f83

Browse files
committed
Add migrations to handle cascade deletions for servers and users
1 parent 2588c25 commit 8953f83

4 files changed

+130
-1
lines changed

app/Providers/MacroServiceProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use Request;
3131
use Pterodactyl\Models\APIKey;
3232
use Illuminate\Support\ServiceProvider;
33+
use Pterodactyl\Services\ApiKeyService;
3334

3435
class MacroServiceProvider extends ServiceProvider
3536
{
@@ -60,7 +61,7 @@ public function boot()
6061

6162
$parts = explode('.', Request::bearerToken());
6263

63-
if (count($parts) === 2 && strlen($parts[0]) === APIKey::PUBLIC_KEY_LEN) {
64+
if (count($parts) === 2 && strlen($parts[0]) === ApiKeyService::PUB_CRYPTO_BYTES * 2) {
6465
// Because the key itself isn't changing frequently, we simply cache this for
6566
// 15 minutes to speed up the API and keep requests flowing.
6667
return Cache::tags([
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
use Illuminate\Support\Facades\Schema;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Database\Migrations\Migration;
6+
7+
class ChangeUserPermissionsToDeleteOnUserDeletion extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('permissions', function (Blueprint $table) {
17+
$table->dropForeign(['subuser_id']);
18+
19+
$table->foreign('subuser_id')->references('id')->on('subusers')->onDelete('cascade');
20+
});
21+
22+
Schema::table('subusers', function (Blueprint $table) {
23+
$table->dropForeign(['user_id']);
24+
$table->dropForeign(['server_id']);
25+
26+
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
27+
$table->foreign('server_id')->references('id')->on('servers')->onDelete('cascade');
28+
});
29+
}
30+
31+
/**
32+
* Reverse the migrations.
33+
*
34+
* @return void
35+
*/
36+
public function down()
37+
{
38+
Schema::table('subusers', function (Blueprint $table) {
39+
$table->dropForeign(['user_id']);
40+
$table->dropForeign(['server_id']);
41+
42+
$table->foreign('user_id')->references('id')->on('users');
43+
$table->foreign('server_id')->references('id')->on('servers');
44+
});
45+
46+
Schema::table('permissions', function (Blueprint $table) {
47+
$table->dropForeign(['subuser_id']);
48+
49+
$table->foreign('subuser_id')->references('id')->on('subusers');
50+
});
51+
}
52+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
use Illuminate\Support\Facades\Schema;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Database\Migrations\Migration;
6+
7+
class SetAllocationToReferenceNullOnServerDelete extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('allocations', function (Blueprint $table) {
17+
$table->dropForeign(['server_id']);
18+
19+
$table->foreign('server_id')->references('id')->on('servers')->onDelete('set null');
20+
});
21+
}
22+
23+
/**
24+
* Reverse the migrations.
25+
*
26+
* @return void
27+
*/
28+
public function down()
29+
{
30+
Schema::table('allocations', function (Blueprint $table) {
31+
$table->dropForeign(['server_id']);
32+
33+
$table->foreign('server_id')->references('id')->on('servers');
34+
});
35+
}
36+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
use Illuminate\Support\Facades\Schema;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Database\Migrations\Migration;
6+
7+
class CascadeDeletionWhenAServerOrVariableIsDeleted extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('server_variables', function (Blueprint $table) {
17+
$table->dropForeign(['server_id']);
18+
$table->dropForeign(['variable_id']);
19+
20+
$table->foreign('server_id')->references('id')->on('servers')->onDelete('cascade');
21+
$table->foreign('variable_id')->references('id')->on('service_variables')->onDelete('cascade');
22+
});
23+
}
24+
25+
/**
26+
* Reverse the migrations.
27+
*
28+
* @return void
29+
*/
30+
public function down()
31+
{
32+
Schema::table('server_variables', function (Blueprint $table) {
33+
$table->dropForeign(['server_id']);
34+
$table->dropForeign(['variable_id']);
35+
36+
$table->foreign('server_id')->references('id')->on('servers');
37+
$table->foreign('variable_id')->references('id')->on('service_variables');
38+
});
39+
}
40+
}

0 commit comments

Comments
 (0)