ftp
4 سال پیش توسط ftp مطرح شد
1 پاسخ

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

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


ثبت پرسش جدید
وحید
تخصص : Fullstack
@forughi.vahid 4 سال پیش آپدیت شد
0

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

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

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