Add a new migration helper for adding default permissions

This commit is contained in:
Toby Zerner 2017-07-22 11:40:06 +09:30
parent e3a5e7eb8d
commit dcd875d89b

View File

@ -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();
}
}
];
}
}