add AdminSeeder
parent
15ed5a1a77
commit
16443e49e0
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Slowlyo\OwlAdmin\Models\{AdminUser, AdminRole, AdminPermission, AdminMenu};
|
||||
|
||||
class AdminSeeder extends Seeder
|
||||
{
|
||||
use WithoutModelEvents;
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
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' => (string)Str::uuid(),
|
||||
'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 . '*';
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue