]> BookStack Code Mirror - bookstack/blob - database/migrations/2019_12_29_120917_add_api_auth.php
Migrations: Updated with type hints instead of php doc
[bookstack] / database / migrations / 2019_12_29_120917_add_api_auth.php
1 <?php
2
3 use Illuminate\Database\Migrations\Migration;
4 use Illuminate\Database\Schema\Blueprint;
5 use Illuminate\Support\Carbon;
6 use Illuminate\Support\Facades\DB;
7 use Illuminate\Support\Facades\Schema;
8
9 return new class extends Migration
10 {
11     /**
12      * Run the migrations.
13      */
14     public function up(): void
15     {
16
17         // Add API tokens table
18         Schema::create('api_tokens', function (Blueprint $table) {
19             $table->increments('id');
20             $table->string('name');
21             $table->string('token_id')->unique();
22             $table->string('secret');
23             $table->integer('user_id')->unsigned()->index();
24             $table->date('expires_at')->index();
25             $table->nullableTimestamps();
26         });
27
28         // Add access-api permission
29         $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
30         $permissionId = DB::table('role_permissions')->insertGetId([
31             'name'         => 'access-api',
32             'display_name' => 'Access system API',
33             'created_at'   => Carbon::now()->toDateTimeString(),
34             'updated_at'   => Carbon::now()->toDateTimeString(),
35         ]);
36         DB::table('permission_role')->insert([
37             'role_id'       => $adminRoleId,
38             'permission_id' => $permissionId,
39         ]);
40     }
41
42     /**
43      * Reverse the migrations.
44      */
45     public function down(): void
46     {
47         // Remove API tokens table
48         Schema::dropIfExists('api_tokens');
49
50         // Remove access-api permission
51         $apiAccessPermission = DB::table('role_permissions')
52             ->where('name', '=', 'access-api')->first();
53
54         DB::table('permission_role')->where('permission_id', '=', $apiAccessPermission->id)->delete();
55         DB::table('role_permissions')->where('name', '=', 'access-api')->delete();
56     }
57 };