93 lines
2.5 KiB
PHP
93 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Slowlyo\OwlAdmin\Models\AdminMenu;
|
|
use Slowlyo\OwlAdmin\Models\AdminPermission;
|
|
use Slowlyo\OwlAdmin\Models\AdminRole;
|
|
use Slowlyo\OwlAdmin\Models\AdminUser;
|
|
|
|
class AdminSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
DB::table('admin_role_permissions')->truncate();
|
|
DB::table('admin_role_users')->truncate();
|
|
AdminUser::truncate();
|
|
$user = AdminUser::create([
|
|
'username' => 'admin',
|
|
'password' => bcrypt('admin'),
|
|
'name' => 'Administrator',
|
|
]);
|
|
|
|
AdminRole::truncate();
|
|
$role = AdminRole::create([
|
|
'name' => 'Administrator',
|
|
'slug' => 'administrator',
|
|
]);
|
|
|
|
$user->roles()->attach($role);
|
|
|
|
$menus = AdminMenu::all()->toArray();
|
|
|
|
$permissions = [];
|
|
foreach ($menus as $menu) {
|
|
$_httpPath = $menu['url_type'] == AdminMenu::TYPE_ROUTE ? $this->getHttpPath($menu['url']) : '';
|
|
|
|
$permissions[] = [
|
|
'id' => $menu['id'],
|
|
'name' => $menu['title'],
|
|
'slug' => 'permission_'.$menu['id'],
|
|
'http_path' => json_encode($_httpPath ? [$_httpPath] : ''),
|
|
'order' => $menu['order'],
|
|
'parent_id' => $menu['parent_id'],
|
|
'created_at' => $menu['created_at'],
|
|
'updated_at' => $menu['updated_at'],
|
|
];
|
|
}
|
|
|
|
AdminPermission::query()->truncate();
|
|
AdminPermission::query()->insert($permissions);
|
|
|
|
DB::table('admin_permission_menu')->truncate();
|
|
foreach ($permissions as $item) {
|
|
$query = DB::table('admin_permission_menu');
|
|
$query->insert([
|
|
'permission_id' => $item['id'],
|
|
'menu_id' => $item['id'],
|
|
]);
|
|
|
|
$_id = $item['id'];
|
|
while ($item['parent_id'] != 0) {
|
|
(clone $query)->insert([
|
|
'permission_id' => $_id,
|
|
'menu_id' => $item['parent_id'],
|
|
]);
|
|
|
|
$item = AdminMenu::query()->find($item['parent_id']);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function getHttpPath($uri)
|
|
{
|
|
$excepts = ['/', '', '-'];
|
|
if (in_array($uri, $excepts)) {
|
|
return '';
|
|
}
|
|
|
|
if (! str_starts_with($uri, '/')) {
|
|
$uri = '/'.$uri;
|
|
}
|
|
|
|
return $uri.'*';
|
|
}
|
|
}
|