Check Role từ User, chúng ta có nhiều cách cấu hình khác nhau. Dưới đây là cách đơn giản cho các ứng dụng nhỏ bạn có thể tìm hiểu về nó thử
Model User
class User extends Authenticatable { use Notifiable; protected $fillable = [ 'first_name', 'last_name', 'email', 'password', 'role_id' , 'address_id','is_active' ]; public function role() { return $this->belongsTo('App\Role'); } public function isAdmin() { if ($this->role->name == 'Admin' && $this->is_active == 1) { return true; } return false; } }
Model Role
class Role extends Model { // protected $fillable = ['name']; public function user() { return $this->hasMany('App\User'); } }
Chúng ta sẽ dùng Middleware để check các Request khi vào các Route của ta
class Admin { public function handle($request, Closure $next) { if(Auth::check() && Auth::user()->isAdmin()){ return $next($request); } return redirect('/'); } }
Sau khi đã có middleware chúng ta cần thêm nó vào app\Http\Kernel.php của Laravel
protected $routeMiddleware = [ ... 'admin' => \App\Http\Middleware\Admin::class, ];
Sau đó chúng ta có thể dùng nó trong các Route như sau:
Route::get('/home', 'HomeController@index')->middleware('admin');
Hoặc nhóm một số route bạn muốn
Route::middleware(['admin'])->prefix('admin')->group(function () { // Route cho trang Dashboard Route::get('/dashboard', 'DashboardController@index')->name('admin.dashboard'); // Các route resource cho users Route::resource('users', 'AdminUsersController'); });