Bước 1: Tải dự án laravel
composer create-project –prefer-dist laravel/laravel Authorization_Gate

Lưu ý : ở đây mình đang tải laravel bằng composer và tên của dự án là Authorization_Gate.
Bước 2: Cấu hình sử dụng laravel authentication

chạy lệnh php artisan serve và truy cập link : http://127.0.0.1:8000/ để xem thành quả

Bước 3: Migrate và seeder dữ liệu
Thêm trường type trong database/migrations/create_users :
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('type')->default('user')
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Thêm dữ liệu seeder cho bảng UserSeeder (php artisan make:seeder UserSeeder)
public function run()
{
DB::table('users')->insert([
'name' => 'admin',
'email' => 'admin@gmail.com',
'type' => 'admin',
'password' => Hash::make('123456789'),
]);
DB::table('users')->insert([
'name' => 'user',
'email' => 'user@gmail.com',
'type' => 'user',
'password' => Hash::make('123456789'),
]);
DB::table('users')->insert([
'name' => 'manager',
'email' => 'manager@gmail.com',
'type' => 'manager',
'password' => Hash::make('123456789'),
]);
}
Khởi chạy bằng lệnh : php artisan migrate:fresh –seed và xem thành quả :
Bước 4: Sử dụng Gate: để cấp quyền truy cập :
tại thư mục app/Providers/AuthServiceProvider.php thêm vào phương thức boot :
Gate::define('permission',function($user){
return $user->type === 'admin' || $user->type === 'manager' ;
});
Hàm trên trả về kết quả đúng nếu user đăng nhập vào có kiểu type là admin hoặc manager.
Sử dụng middleware để lọc Gate:
Route::get('/home', 'HomeController@index')->name('home')->middleware(['can:permission']);
Bước 5: Chỉnh sửa views
a. vào views/ home.blade.php và thêm vào <p>{{ Auth::user()->type}}</p> để biết user đang login vào thuộc kiểu nào;
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Dashboard</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<p> {{ Auth::user()->type }} logged in!</p>
</div>
</div>
</div>
</div>
</div>
@endsection
b.tạo views/errors/403.blade.php để xem lỗi
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
</head>
<body>
<h1 style="text-align: center">Bạn ko đủ quyền</h1>
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</body>
</html>
Bước 6: Xem thành quả
a . login bằng tài khoản admin:
b. login bằng tài khoản manager:
c. login bằng tài khoản user:
Author: Phan Thiên Hoàng
Đăng ký nhận bộ tài liệu học Java trên 2 trang giấy tại đây
Xem thêm: Java Coding Bootcamp là gì? Tổng quan về Java Coding Bootcamp








0 Lời bình