mirror of
https://github.com/flarum/core.git
synced 2025-07-21 08:41:17 +02:00
Add a new migration helper for adding default permissions
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
namespace Flarum\Database;
|
namespace Flarum\Database;
|
||||||
|
|
||||||
use Flarum\Settings\SettingsRepositoryInterface;
|
use Flarum\Settings\SettingsRepositoryInterface;
|
||||||
|
use Illuminate\Database\ConnectionInterface;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Database\Schema\Builder;
|
use Illuminate\Database\Schema\Builder;
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ abstract class Migration
|
|||||||
/**
|
/**
|
||||||
* Add default values for config values.
|
* Add default values for config values.
|
||||||
*/
|
*/
|
||||||
public static function addSettings($defaults)
|
public static function addSettings(array $defaults)
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'up' => function (SettingsRepositoryInterface $settings) use ($defaults) {
|
'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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user