Checking User Role in Laravel: Using belongsTo and hasMany Relationships

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');
});

 

Bài Viết Liên Quan

x

Xin chào! Hãy ủng hộ chúng tôi bằng cách nhấp vào quảng cáo trên trang web. Việc này giúp chúng tôi có kinh phí để duy trì và phát triển website ngày một tốt hơn. (Hello! Please support us by clicking on the ads on this site. Your clicks provide us with the funds needed to maintain and improve the website continuously.)

Ngoài ra, hãy đăng ký kênh YouTube của chúng tôi để không bỏ lỡ những nội dung hữu ích! (Also, subscribe to our YouTube channel to stay updated with valuable content!)

Đăng Ký