]> BookStack Code Mirror - bookstack/blobdiff - database/migrations/2017_01_01_130541_create_comments_table.php
#47 Adds comment permission to each role.
[bookstack] / database / migrations / 2017_01_01_130541_create_comments_table.php
index 3565192a49c44a85f9b8fb1b6176db503ac8256a..8aa99eea47cb22dc020ae7d061ee455769627116 100644 (file)
@@ -13,6 +13,9 @@ class CreateCommentsTable extends Migration
      */
     public function up()
     {
+        if (Schema::hasTable('comments')) {
+            return;
+        }
         Schema::create('comments', function (Blueprint $table) {
             $table->increments('id')->unsigned();                       
             $table->integer('page_id')->unsigned();
@@ -23,6 +26,25 @@ class CreateCommentsTable extends Migration
             $table->integer('updated_by')->unsigned()->nullable();
             $table->index(['page_id', 'parent_id']);
             $table->timestamps();
+
+            // Get roles with permissions we need to change
+            $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
+
+            // Create & attach new entity permissions
+            $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+            $entity = 'Comment';
+            foreach ($ops as $op) {
+                $permissionId = DB::table('role_permissions')->insertGetId([
+                    'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
+                    'display_name' => $op . ' ' . $entity . 's',
+                    'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
+                    'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
+                ]);
+                DB::table('permission_role')->insert([
+                    'role_id' => $adminRoleId,
+                    'permission_id' => $permissionId
+                ]);
+            }
         });
     }
 
@@ -34,5 +56,12 @@ class CreateCommentsTable extends Migration
     public function down()
     {
         Schema::dropIfExists('comments');
+        // Create & attach new entity permissions
+        $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+        $entity = 'Comment';
+        foreach ($ops as $op) {
+            $permName = strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op));
+            DB::table('role_permissions')->where('name', '=', $permName)->delete();
+        }
     }
 }