راکت

سوال در خصوص پرمیشن بندی

1 پاسخ

@ali.bayat
من یک جدولی دارم که نام و ایمیل و موبایل و آدرس و میخوام به مدیر دسترسی کامل بده اما برای فلان مدیر دسترسی به موبایل یا ایمیل بده میشه این رو برام شرح بدید یا نمونه کد بگید

ثبت پرسش جدید

پاسخ‌ها

1
وحید
وحید
@forughi.vahid

تخصص: Fullstack

@mehdisut
برای این کار باید از لاراول policy استفاده کنید که توی داکیومنتش هم هست. در واقع شما دروازه هایی با نام های مختلف ایجاد میکنید و توی تعریف دروازه مشخص میکنید که چه کسایی میتونن از این دروازه عبور کنن ، توی کدتون هر جایی که خواستید از اون دروازه استفاده میکنید تا اشخاص خاصی بتونن به اون قسمت دسترسی داشته باشن. مثال :
App\Providers\AuthServiceProvider توی فانکشن boot میتونید دروازه رو تعریف کنید ، البته با دستورات artisan هم میتونید پالیسی جدید ایجاد کنید :

$gate->define('edit-name' , function($user){
     return $user->is('admin');
});

برای استفاده توی کنترولر :

authorize('edit-name')  //throw UnAuthorize Exception
// Or
if($user->can('edit-name', $post)){

}
else{
}

توی بلید هم میتونید از دستور @can استفاده کنید. شما میتونی سیستم role permission رو با توجه به نیازتون توی دیتابیس پیاده کنید و دروازه ها رو به صورت داینامیک از جدول permissions بخونید. مثلا :

foreach ($this->getPermissions() as $permission) {
    $gate->define($permission->label , function($user) use ($permission){
       return $user->hasPermission($permission);
    });
}

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام