mohamadtsn/laravel-supernova

它是 Laravel 应用的基本管理面板

3.0.3 2023-06-24 06:38 UTC

README

Laravel Supernova

Supernova image

为您的 Laravel App 提供一个专业且强大的管理面板。🎁

安装: ⬇️

composer require mohamadtsn/laravel-supernova

配置: ⚙️

发布基本供应商文件

php artisan supernova:publish [tags] --force

标签列表

  • supernova-resources
  • supernova-base-resources
  • supernova-config
  • supernova-migrations
  • supernova-virtual-host-routes
  • supernova-recaptcha-config
  • supernova-basic-routes

发布自定义供应商文件

php artisan supernova:publish [tags] --force

config/app.php 中的区域设置为 fa

'locale' => 'fa',

更改父类用户模型

将以下代码放入 App\Models\User.php

use Mohamadtsn\Supernova\Models\User as SupernovaUser; // use supernova User Model
use Mohamadtsn\Supernova\Classes\Traits\PermissionWrapper;
class User extends SupernovaUser
{
    use HasApiTokens, HasFactory, Notifiable, PermissionWrapper;
    // other class methods
}

App\Models\User.php 中的 fillable 字段中添加 level

protected $fillable = [
    'level',
];

Database\Seeders\DatabaseSeeder.phprun() 方法中添加以下种子器调用

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        // Other seeders call
        // You add seeders
        $this->call(UserSeeder::class); // #1
        $this->call(PermissionSeeder::class); // #2
    }
}

config/auth.phpguards 部分中添加以下内容

'guards' => [
    // other guard
    'admin' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

将这些放入 app/Http/Kernel.php 中,如下所示

use App\Http\Middleware\Panel\CheckPermission; // use Middleware class CheckPermission

class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        // other routeMiddleware
        'permission' => CheckPermission::class, // add CheckPermission::class on this section
    ];
}

App/Http/Middleware/Authenticate.phpredirectTo 方法中更改以下内容

protected function redirectTo($request)
{
        if ($request->expectsJson()) {
            return response()->json([
                'title' => 'access denied',
                'text' => 'unauthorized ...!',
                'type' => 'error'
            ], Response::HTTP_FORBIDDEN);
        }
        return route('panel.login');
}

将 admin 面板路由文件 routes/admin.php 添加到 App/Providers/RouteServiceProvider.phpboot() 方法中

重要!!请确保在 `web.php` 之前添加。

仔细查看

运行使用虚拟域的项目

public function boot()
{
    $this->routes(function () {
        // other routes file
        Route::middleware('web')
                ->namespace($this->namespace)
                ->domain(config('supernova.management_url'))
                ->group(base_path('routes/admin.php')); // #1 add admin panel routes (admin.php)
        
        Route::middleware('web')
                ->namespace($this->namespace)
                ->domain(config('app.url'))
                ->group(base_path('routes/web.php')); // #2 web.php routes
    });
}

使用命令行服务(php artisan serve)运行项目

public function boot()
{
    $this->routes(function () {
        // other routes file
        Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/admin.php')); // #1 add admin panel routes (admin.php)
        
        Route::middleware('web')
                ->namespace($this->namespace)
                ->domain(config('app.url'))
                ->group(base_path('routes/web.php')); // #2 web.php routes
    });
}

设置模式

  1. .env 文件中设置数据库配置连接
  2. 使用以下命令进行迁移和播种
php artisan migrate:fresh --seed        // "Associated with" Drop All Tables & Migrate and seeding
"Or"
php artisan migrate --seed              // "Without" Drop All Tables & Migrate and seeding

重新生成 composer 自动加载

 composer dump-autoload

用法

方法 #1 ====> 使用虚拟主机设置

  • 创建一个名为 Managementvirtual subdomain

    • 示例
      • 原始域名 => example.test // 主 URL
      • 子域名域名 => management.example.test // 管理面板 URL
  • param 管理面板 URL 添加到 env 文件中,名称为 APP_MANAGEMENT_URL,如下所示

    APP_URL= http://shop.test
    APP_MANAGEMENT_URL= http://management.shop.test
  • config 管理面板 URL 添加到 config/supernova.php 文件中,名称为 management_url,如下所示

    return [
        // other configs
        'management_url' => env('APP_MANAGEMENT_URL', 'http://management.example.test'),
    ]
  • 登录到面板 management.example.test/login

  • 仪表板面板 management.example.test/

方法 #2 ====> 不使用虚拟主机设置

  1. 发布基本路由
php artisan supernova:publish supernova-basic-routes --force
  1. 使用命令服务应用
php artisan serve
  1. 提示:您只能通过前缀 panel 访问 Supernova 面板路由
  2. 转到 127.0.0.1:8000/panel/login

登录到面板

  • 电子邮件: admin@gmail.com
  • 密码: supernova@123

享受它 👋