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

با میان افزارهای لاراول (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');
});

آدرس زیر در مرورگر وارد کنید و نتیجه آن را ببینید:

http://127.0.0.1:8000/admin

در آخر کاربر با مجوز admin می تواند وارد صفحه میزکار مدیر وارد شود.

با این روش می توانید چندین مجوز کاربری جدا را اعمال کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *