diff --git a/README.md b/README.md index 04f2483..106a064 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -php artisan k:g -php artisan storage:link -php artsian admin:publish -php artisan admin:install - -php artisan db:seed AdminMenuSeeder \ No newline at end of file +- `cp .env.example .env` +- `php artisan key:generate` +- `php artisan storage:link` +- 创建数据库 +- 修改 .env 文件中的配置 +- `php artisan migrate --seed` \ No newline at end of file diff --git a/app/Admin/Controllers/AdminNoticeController.php b/app/Admin/Controllers/AdminNoticeController.php index 1d7a0b7..9ae9841 100644 --- a/app/Admin/Controllers/AdminNoticeController.php +++ b/app/Admin/Controllers/AdminNoticeController.php @@ -9,6 +9,7 @@ use Slowlyo\OwlAdmin\Renderers\TextControl; use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\AdminNoticeService; use App\Admin\Components; +use Slowlyo\OwlAdmin\OwlAdmin; class AdminNoticeController extends AdminController { @@ -18,12 +19,16 @@ class AdminNoticeController extends AdminController public function list(): Page { + $options = []; + $user = OwlAdmin::user(); + // 添加权限 + if ($user->can('admin_notice.create')) { + array_push($options, $this->createButton(true, 'lg')); + } + $options = array_merge($options, $this->baseHeaderToolBar(),); $crud = $this->baseCRUD() ->filterTogglable(false) - ->headerToolbar([ - $this->createButton(true, 'lg'), - ...$this->baseHeaderToolBar(), - ]) + ->headerToolbar($options) ->columns([ TableColumn::make()->name('id')->label('ID')->sortable(true), TableColumn::make()->name('title')->label('标题'), diff --git a/app/Admin/Controllers/SettingController.php b/app/Admin/Controllers/SettingController.php index 02989e2..1bb58df 100644 --- a/app/Admin/Controllers/SettingController.php +++ b/app/Admin/Controllers/SettingController.php @@ -32,6 +32,8 @@ class SettingController extends AdminController ->redirect('') ->api($this->getStorePath()) ->data(settings()->all()) + ->panelClassName('') + ->title('') ->body( Tabs::make()->tabs([ Tab::make()->title('基本设置')->body([ diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 3a0bf35..4786f43 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -73,6 +73,7 @@ class AdminMenuSeeder extends Seeder ['title' => '权限管理', 'icon' => 'icon-park:key-one', 'url' => '/system/admin_permissions', 'order'=>3], ['title' => '菜单管理', 'icon' => 'icon-park:menu-fold-one', 'url' => '/system/admin_menus', 'order'=>4], ['title' => '字典管理', 'icon' => 'icon-park:arrow-keys', 'url' => '/keywords', 'order'=>5], + ['title' => '配置管理', 'icon' => 'icon-park:setting-two', 'url' => '/system/settings', 'order'=>6], ], ], ]; diff --git a/database/seeders/AdminSeeder.php b/database/seeders/AdminSeeder.php new file mode 100644 index 0000000..96e7653 --- /dev/null +++ b/database/seeders/AdminSeeder.php @@ -0,0 +1,89 @@ + '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 . '*'; + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 76d96dc..e796ac6 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -14,11 +14,7 @@ class DatabaseSeeder extends Seeder */ public function run() { - // \App\Models\User::factory(10)->create(); - - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); + $this->call(AdminMenuSeeder::class); + $this->call(AdminSeeder::class); } } diff --git a/public/admin/index.html b/public/admin/index.html index 6ff79bf..29947d6 100644 --- a/public/admin/index.html +++ b/public/admin/index.html @@ -1,5 +1,5 @@ - +