ایجاد مجوز دسترسی کاربران در لاراول ۶

با میان افزارهای لاراول (Laravel Middlewares) می توانید مجوز دسترسی کاربران (implement role-based access control) را ایجاد کنید و از دسترسی به صفحه ی خاص جلوگیری کنید.
۱. به پوشه migration رفته و فایل create_users_table را باز کنید و جدول زیر را اضافه کنید:
$table->string('role');
و دستور زیر را در خط فرمان وارد کنید:
php artisan migrate
در حالا وارد phpmyadmin شده در جدول users ستون role نام admin را وارد کنید.
۲. در پوشه Http فایل User.php را باز کنید و کد زیر را داخل کلاس وارد کنید:
protected $guarded = ['role'];
public function isRole()
{
return $this->role;
}
۳. با دستور میان افزار (middleware) فایل admin ایجاد کرده و کد زیر را اضافه کنید:
دستور زیر را در خط فرمان ایجاد کنید:
php artisan make:middleware Admin
کد زیر:
use Auth;
*****
public function handle($request, Closure $next)
{
if(Auth::check() && Auth::user()->isRole()=="admin")
{
return $next($request);
}
return redirect('login');
}
۴. در پوشه Controllers فایل Kernel.php باز کرده در خط $routeMiddleware کد زیر را در انتها اضافه کنید:
'admin' => \App\Http\Middleware\Admin::class,
۵. فایل AdminController را ایجاد کنید: (در پوشه Controllers قرار دارد)
دستور زیر را در خط فرمان وارد کنید:
php artisan make:controller AdminController
فایل AdminController باز کرده و در کد زیر را اضافه کنید:
use DB;
******
class AdminController extends Controller
{
public function index()
{
return view('admin.index');
}
}
۶. فایل مورد نظر admin.blade.php در پوشه layouts و فایل index.blade.php در پوشه admin (پوشه admin ایجاد شود) را ایجاد کنید.
کد زیر در فایل admin.blade.php اضافه کنید:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>میزکار</title>
</head>
<body>
@yield('content')
</body>
</html>
کد زیر در فایل index.blade.php اضافه کنید:
@extends('layouts\admin')
@section('content')
تست
@endsection
۷. در پوشه routes فایل web.php کد زیر را در انتها اضافه کنید:
Route::group(['prefix' => 'admin', 'middleware' => ['auth' => 'admin']], function () {
Route::get('/', 'AdminController@index');
});
آدرس زیر در مرورگر وارد کنید و نتیجه آن را ببینید:
در آخر کاربر با مجوز admin می تواند وارد صفحه میزکار مدیر وارد شود.
با این روش می توانید چندین مجوز کاربری جدا را اعمال کنید.