Laravel 8 – Tạo Roles và Permissions không sử dụng Package.

Tram Ho

Như chúng ta đã biết role và permission là một phần rất quan trọng trong hầu hết các website hiện nay. Trong laravel hiện nay có rất nhiều package hỗ trợ cho việc này như ‘spatie/laravel-permission‘. Nhưng hôm nay mình sẽ chia sẻ với các bạn cách tạo role và permission đơn giản mà không cần dùng đến package. Chúng ta cùng thực hiện qua các bước sau nhé.

Bước 1. Tạo dự án laravel 8

  • Tạo một dự án laravel (hiện tại bản mới nhất là 8.*) mới bằng câu lệnh sau, đồng thời bạn cũng vào trong file .env để config cho database dùng cho project này bao gồm tên database,

  • Để cài đặt theo version:

  • Trong file .env

Bước 2: Tạo Auth

  • Tạo laravel authentication bằng câu lệnh sau:

Bước 3: Tạo Model và Migration

  • Sau khi tạo xong dự án và auth, chúng ta cần tạo model cho roles và permissions.

Bước 4: Sửa file migration

  • Tạo Users table

  • Tạo Permissions Table

  • Tạo Roles Table

Bước 5: Thêm pivot table

  • Chúng ta sẽ tạo bảng pivot users_permissions, sử dụng câu lệnh sau:

-Thay đổi bảng user_permissions như sau:

  • Tiếp tục tạo bảng pivot users_roles, sử dụng câu lệnh sau :

  • Thay đổi bảng users_roles như sau:

  • Tạo thêm bảng roles_permissions. Bảng này được sử dụng để cấp quyền cho người dùng. Ví dụ, người dùng có quyền xem đối với bài đăng còn với tư cách là quản trị viên có quyền chỉnh sửa hoặc xóa bài đăng. Đó là nhiệm vụ của bảng này, sử dụng câu lệnh sau:

  • Thay đổi bảng roles_permissions như sau:

  • Run câu lệnh sau để tạo migration :

Bước 6: Tạo relationships

  • Tạo quan hệ giữa hai bảng roles và permissions như sau:
  • Trong file App/Role.php

  • Trong file App/Permission.php

Bước 7: Tạo Trait

  • Tạo một thư mục mới và đặt tên là Permissions và tạo một tên tệp mới HasPermissionsTrait.php. Đây là xử lý quan hệ người dùng. Trở lại trong model User chúng ta chỉ cần import trait này vào là được.
  • Trong file app/User.php

  • Trong file HasPermissionsTrait.php

-Ở đây chúng ta có thể debug như sau để kiểm tra.

Bước 8: Tạo custom Provider

  • Trong bước này, chúng ta sử dụng lệnh Laravel directive “can” để kiểm tra xem User có quyền hay không thay vì sử dụng hàm $user-> hasPermissionTo ().
  • Để sử dụng giống như $user-> can(), chúng ta cần tạo PermissionsServiceProvider mới để ủy quyền. Sử dụng câu lệnh sau:

  • Đăng ký trong method boot như sau:

  • Tiếp đến đăng ký PermissionsServiceProvider. Trong file app.php chúng ta làm như sau :

  • Bạn có thể test như sau:

Bước 9: Tạo dữ liệu để test

  • Tạo route:

  • Tạo App\Http\Controllers\PermissionController.php

  • Chạy url route bạn có thể nhìn thấy một số dữ liệu giả từ các bảng.

  • Trong file blade bạn có thể dùng nó như sau:

  • Bạn có thể sử dụng nhiều role nếu bạn muốn.

Bước 10: Cài đặt Middleware

  • Sử dụng câu lệnh sau:

  • Để add middleware vào file kernel và setup như sau:
  • Trong file App\Http\Middleware\RoleMiddleware.php

  • Đăng ký RoleMiddleware vào file Kernel.php
  • App\Http\Kernel.php

  • Và bây giờ trong file routes chúng ta đã có thể sử dụng:

  • Bây giờ bạn có thể sử dụng trong Controller của mình như bên dưới để cấp quyền và truy cập cho người dùng.

** TRÊN ĐÂY LÀ NHỮNG CHIA SẺ CỦA MÌNH, CẢM ƠN CÁC BẠN ĐÃ ĐỌC BÀI VIẾT .**

Chia sẻ bài viết ngay