设置数据库
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=roles
DB_USERNAME=root
DB_PASSWORD=
执行迁移文件
php artisan migrate
安装Breeze
composer require laravel/breeze --dev
php artisan breeze:install
执行迁移文件
php artisan migrate
npm install
npm run dev
安装安装laravel-permission
laravel-permission文档地址
composer require spatie/laravel-permission
使用以下内容发布迁移和config/permission.php配置文件:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
清除您的配置缓存。
此包需要访问permission配置设置才能运行迁移。使用命令清除配置缓存:
php artisan config:clear
运行迁移:
发布并配置配置和迁移后,您可以通过运行以下命令为此包创建表:
php artisan migrate
路由
Route::middleware('auth')->group(function () {
.
.
.
// 权限页面
Route::get('/permission', [PermissionController::class, 'index'])->name('permissions.index');
// 新增权限页面
Route::get('/permissions/create', [PermissionController::class, 'create'])->name('permissions.create');
// 执行新增权限
Route::post('/permissions', [PermissionController::class, 'store'])->name('permissions.store');
});
创建控制器
php artisan make:controller PermissionController
App/Http/Controllers/PermissionController.PHP
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Spatie\Permission\Models\Permission;
class PermissionController extends Controller
{
// 权限页面
public function index()
{
return view('permissions.list');
}
// 创建权限页面
public function create()
{
return view('permissions.create');
}
// 在数据库中插入一个权限
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|unique:permissions|max:20',
]);
if ($validator->passes()) {
Permission::create([
'name' => $request->name
]);
return redirect()->route('permissions.index')->with('success', '权限添加成功~~');
} else {
return redirect()->route('permissions.create')->withErrors($validator)->withInput();
}
}
}
前端模版
权限列表
resources/views/permissions/list.blade.php
<x-app-layout>
<x-slot name="header">
<div class="flex justify-between">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('权限列表') }}
</h2>
<a href="{{ route('permissions.create') }}"
class="bg-slate-700 text-sm rounded-md text-white px-5 py-3">新增</a>
</div>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
{{-- 表单成功验证 --}}
<x-message></x-message>
<table class="w-full">
<thead class="bg-gray-50">
<tr class="border-b">
<th class="px-6 py-3 text-left" width="60">#</th>
<th class="px-6 py-3 text-left">权限名字</th>
<th class="px-6 py-3 text-left" width="180">创建时间</th>
<th class="px-6 py-3 text-center" width="180">操作</th>
</tr>
</thead>
<tbody class="bg-white">
@if($permissions->isNotEmpty())
@foreach($permissions as $permission)
<tr class="border-b">
<td class="px-6 py-3 text-left">{{$permission->id}}</td>
<td class="px-6 py-3 text-left">{{$permission->name}}</td>
<td class="px-6 py-3 text-left">{{$permission->created_at}}</td>
<td class="px-6 py-3 text-center">
<a href=""
class="bg-slate-700 text-sm rounded-md text-white px-3 py-2 hover:bg-slate-600">编辑</a>
<a href=""
class="bg-red-600 text-sm rounded-md text-white px-3 py-2 hover:bg-red-500">删除</a>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</div>
</x-app-layout>
新增权限
resources/views/permissions/create.blade.php
<x-app-layout>
<x-slot name="header">
<div class="flex justify-between">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
权限 / 新增
</h2>
<a href="{{ route('permissions.index') }}"
class="bg-slate-700 text-sm rounded-md text-white px-5 py-3">权限列表</a>
</div>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 text-gray-900">
<form action="{{ route('permissions.store') }}" method="post">
@csrf
<div>
<label for="" class="text-sm font-medium">权限名称</label>
<div class="my-3">
<input value="{{old('name')}}" name="name" placeholder="权限名单" type="text"
class="border-gray-300 shadow-sm w-1/2 rounded-lg">
@error('name')
<p class="text-red-400 font-medium">{{ $message }}</p>
@enderror
</div>
<button class="bg-slate-700 text-sm rounded-md text-white px-5 py-3">提交</button>
</div>
</form>
</div>
</div>
</div>
</div>
</x-app-layout>
公用的验证提醒文件
resources/views/components/message.blade.php
{{-- 表单成功验证 --}}
@if(Session()->has('success'))
<div class="bg-green-200 border-gray-600 p-4 mb-3 rounded-sm shadow-sm">
{{ Session()->get('success') }}
</div>
@endif
{{-- session函数来与用户会话中的错误信息 --}}
@if(Session()->has('error'))
<div class="bg-green-200 border-red-600 p-4 mb-3 rounded-sm shadow-sm">
{{ Session()->get('error') }}
</div>
@endif