From dcd875d89bcc1065377f37392ec4fce98732f229 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Sat, 22 Jul 2017 11:40:06 +0930 Subject: [PATCH] Add a new migration helper for adding default permissions --- framework/core/src/Database/Migration.php | 38 ++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/framework/core/src/Database/Migration.php b/framework/core/src/Database/Migration.php index 3316aee2f..f8c08195b 100755 --- a/framework/core/src/Database/Migration.php +++ b/framework/core/src/Database/Migration.php @@ -12,6 +12,7 @@ namespace Flarum\Database; use Flarum\Settings\SettingsRepositoryInterface; +use Illuminate\Database\ConnectionInterface; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Builder; @@ -96,7 +97,7 @@ abstract class Migration /** * Add default values for config values. */ - public static function addSettings($defaults) + public static function addSettings(array $defaults) { return [ 'up' => function (SettingsRepositoryInterface $settings) use ($defaults) { @@ -111,4 +112,39 @@ abstract class Migration } ]; } + + /** + * Add default permissions. + */ + public static function addPermissions(array $permissions) + { + $keys = []; + + foreach ($permissions as $permission => $groups) { + foreach ((array) $groups as $group) { + $keys[] = [ + 'group_id' => $group, + 'permission' => $permission, + ]; + } + } + + return [ + 'up' => function (ConnectionInterface $db) use ($keys) { + foreach ($keys as $key) { + $instance = $db->table('permissions')->where($key)->first(); + + if (is_null($instance)) { + $db->table('permissions')->insert($key); + } + } + }, + + 'down' => function (ConnectionInterface $db) use ($keys) { + foreach ($keys as $key) { + $db->table('permissions')->where($key)->delete(); + } + } + ]; + } }