رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
درخواست راهنمایی : تعریف سطوح دسترسی کاربری در لاراول
#1
درود بر دوستان لاراولی عزیز ، بنده  میخوام در لاراول یک ACL پیاده سازی کنم  و نقش کاربری و سطوح دسترسی رو برای کاربران تعریف کنم ، ظاهرا پکیجی با نام acl-Larevel  هست ولی کار باهاش رو نمیدونم چه شکلی هست ممنون میشم اگر کسی بلد هست کارباهاش رو توضیح بده و یا با خود لاراول و middelwar ها بگه چه جوری این کار رو میشه انجام داد ؟

مثلا :  برای بخش های مدیریتی سیستم نظیر :

- پست ها
-دسته بندی ها
- کاربران
و ...

-------------------
سطوح دسترسی :

پست ها
  • اضافه کردن
  • ویرایش
  • حذف


دسته بندی ها
  • اضافه کردن
  • ویرایش
  • حذف

و....

-------------------
نقش های کاربری :

- Super User : مدیر کل     -> سطح دسترسی : کل
- Registered : کاربر عادی  ->  سطح دسترسی : ویرایش پروفایل شخصی
- Author     : نویسنده     -> سطح دسترسی : پست ها ، دسته بندی + عملیات :CRUD
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#2
آموزشش اینجا میتونید بخونید : https://github.com/kodeine/laravel-acl/wiki

سادست بخونید کجاش مشکل داشتید بپرسید
پاسخ
#3
دوستان بنده پکیج رو نصب کردم و Role ها رو ایجاد کردم فقط موندم چه جوری Assign Role(s) To User  کنم ؟

طبق داکیومنت که پیش بریم تو این قسمت این کد رو قرار داده و به سه روش میگه میشه پاس داد اطلاعات رو :

کد پی‌اچ‌پی:
$user User::find(1);
// by object
$user->assignRole($roleAdmin);
// or by id
$user->assignRole($roleAdmin->id);
// or by just a slug
$user->assignRole('administrator'); 

مشکلم دقیقا اینه که این کد رو درجا استفاده کنم چون من الان یک صفحه درست کردم که همه کاربران رو نمایش میده و یک دکمه برای تخصیص Role  گزاشتم که کلیک بشه

آیدی+نام کاربر رو میفرسته به صفحه اعطای نقش و اونجا با استفاده از یک لیست کشویی نقش هارو نمایش میدم . در ضمن ایدی رو توسط یک فیلد مخفی میفرستم که ازش استفاده کنم ولی سردرگم شدم واقعا  Confused


ممنون میشم راهنمایی بفرمایید .


اینم کدهام  :

روت برای اعطای نقش + فرستادن اطلاعات کاربر :

کد پی‌اچ‌پی:
Route::get('admin/users/{id}/assign','UsersController@assigment'); 


اینم تابع assigment :

کد پی‌اچ‌پی:
public function assigment($id)
 
   {
 
       $roles=Role::all();
 
       $users=User::findOrFail($id);
 
       return view('users.Role.assign',compact('roles','users'));
 
   


اینم نمایی از توضیحاتی که دادم :
[عکس: 144987102984031.png]

حالا این بخش رو چه جوری سیو کنم که بره توی جدول role_user ذخیره بشه رو نمیدونم شما عزیزان بفرمایید .
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#4
(12-10-2015, 02:13 PM)mohammad6006 نوشته:  آموزشش اینجا میتونید بخونید : https://github.com/kodeine/laravel-acl/wiki

سادست بخونید کجاش مشکل داشتید بپرسید

(12-11-2015, 09:52 PM)Bvk.Programmer نوشته:  دوستان بنده پکیج رو نصب کردم و Role ها رو ایجاد کردم فقط موندم چه جوری Assign Role(s) To User  کنم ؟

طبق داکیومنت که پیش بریم تو این قسمت این کد رو قرار داده و به سه روش میگه میشه پاس داد اطلاعات رو :



کد پی‌اچ‌پی:
$user User::find(1);
// by object
$user->assignRole($roleAdmin);
// or by id
$user->assignRole($roleAdmin->id);
// or by just a slug
$user->assignRole('administrator'); 

مشکلم دقیقا اینه که این کد رو درجا استفاده کنم چون من الان یک صفحه درست کردم که همه کاربران رو نمایش میده و یک دکمه برای تخصیص Role  گزاشتم که کلیک بشه

آیدی+نام کاربر رو میفرسته به صفحه اعطای نقش و اونجا با استفاده از یک لیست کشویی نقش هارو نمایش میدم . در ضمن ایدی رو توسط یک فیلد مخفی میفرستم که ازش استفاده کنم ولی سردرگم شدم واقعا  Confused


ممنون میشم راهنمایی بفرمایید .


اینم کدهام  :

روت برای اعطای نقش + فرستادن اطلاعات کاربر :



کد پی‌اچ‌پی:
Route::get('admin/users/{id}/assign','UsersController@assigment'); 


اینم تابع assigment :



کد پی‌اچ‌پی:
public function assigment($id)
 
   {
 
       $roles=Role::all();
 
       $users=User::findOrFail($id);
 
       return view('users.Role.assign',compact('roles','users'));
 
   




حالا این بخش رو چه جوری سیو کنم که بره توی جدول role_user ذخیره بشه رو نمیدونم شما عزیزان بفرمایید .



راه حل رو یافتم ، اومدم یک request  تعریف کردم و اطلاعات پاس داده شده به کنترلر رو با استفاده از کدی که قرار میدم براتون ذخیره کردم .

کد پی‌اچ‌پی:
$roleAdmin = new Role();
 
       $roleAdmin->id $request->role;
 
       $user=User::findOrFail(5);
 
       $user->assignRole($roleAdmin->id); 
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#5
یک مشکل دیگه برای نمایش نقش های اعطا شده به کاربران خود داکیومنت گفته که :

کد پی‌اچ‌پی:
Get roles assigned to a user.//

$user User::first();
$user->getRoles(); 

وقتی این رو استفاده میکنم و همچین اروری میده :

کد:
BadMethodCallException in Macroable.php line 81:
Method getRoles does not exist.

متد getRoles رو پیدا نمیکنه . لطفا راهنمایی بفرمایید
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#6
کسی نبود راهنمایی کنه ؟؟؟؟؟؟
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#7
(12-14-2015, 07:35 AM)Bvk.Programmer نوشته:  کسی نبود راهنمایی کنه ؟؟؟؟؟؟

واقعبت امر ابنه که من میتونم بهت با روش دیگه ای بگم که چطوری سطح دسترسی ایجاد کنی اگر مایلی بگو تا راهنمایی کنم !
پاسخ
#8
(02-13-2016, 08:32 PM)smartDeath نوشته:  
(12-14-2015, 07:35 AM)Bvk.Programmer نوشته:  کسی نبود راهنمایی کنه ؟؟؟؟؟؟

واقعبت امر ابنه که من میتونم بهت با روش دیگه ای بگم که چطوری سطح دسترسی ایجاد کنی اگر مایلی بگو تا راهنمایی کنم !


ممنون میشم دوست عزیز اگر راهنمایی بفرمایید که بشه سطوح دسترسی داینامیکی از بخش های مختلف سایت برای کاربر ایجاد کرد
کد آن است که خود ببوید نه آن که برنامه نویس بگوید  Cool
پاسخ
#9
(02-15-2016, 06:46 AM)Bvk.Programmer نوشته:  
(02-13-2016, 08:32 PM)smartDeath نوشته:  
(12-14-2015, 07:35 AM)Bvk.Programmer نوشته:  کسی نبود راهنمایی کنه ؟؟؟؟؟؟

واقعبت امر ابنه که من میتونم بهت با روش دیگه ای بگم که چطوری سطح دسترسی ایجاد کنی اگر مایلی بگو تا راهنمایی کنم !


ممنون میشم دوست عزیز اگر راهنمایی بفرمایید که بشه سطوح دسترسی داینامیکی از بخش های مختلف سایت برای کاربر ایجاد کرد

برای ایجاد سطح دسترسی باید یه جدول ایجاد کنید با نام roles که شامل این فیلد ها باشه :
id name roles بعد باید یه کنترلر برای ثبت و حذف و ویرایش سطح دسترسی درست کنید ، حالا یعنی چی : یعنی اینکه یه فرم باشه که توش همه ی rout های پروژه به صورت checkbox باشه و بعد این رو شما باید به صورت json تو فیلد roles جدول roles ذخیره کنید .
تا اینجا رو اگر انجام بدین شما 80 درصد از سطح دسترسی رو درست کردین .
پاسخ
#10
دوست عزیز راحت ترین راه استفاده از Cartalyst Sentinel هست که خودش تمام این کارها رو به راحتی انجام میده. تعریف انواع دسترسی و اعتبارسنجی و Permission ها
پیشنهاد میکنم حتما یک سر به سایتش بزنید خودتون میفهمید چقدر راحته.
https://cartalyst.com/manual/sentinel/2.0
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  گرفتن آپدیت های وب هوک تلگرام در لاراول Mr.AMiR 6 228 09-19-2017, 04:30 AM
آخرین ارسال: Bvk.Programmer
  خطای نصب لاراول dmbehrouz 0 40 09-07-2017, 01:11 PM
آخرین ارسال: dmbehrouz
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 1 95 08-31-2017, 08:40 AM
آخرین ارسال: imanghafoori
  راهنمایی در مورد یک کوئری amirbakhtiari 1 34 08-21-2017, 07:14 PM
آخرین ارسال: زهرا
  آموزش اعتبار سنجی در لاراول 5 alihossein 5 1,233 07-30-2017, 08:47 AM
آخرین ارسال: shima71
  آموزش فارسی لاراول ۵ alihossein 7 3,773 07-28-2017, 06:44 PM
آخرین ارسال: shima71
  انتقال سایت mvc به لاراول miladhassan 1 83 07-26-2017, 09:01 AM
آخرین ارسال: fery
Question راه اندازی لاراول روی سیستم افلاین؟ fery 0 55 07-26-2017, 08:55 AM
آخرین ارسال: fery
Sad مشکل در ایجاد وبلاگ در لاراول 5.4 itroz 0 95 07-05-2017, 05:03 PM
آخرین ارسال: itroz
  بهترین پکیج acl برای لاراول چیست homeily@gmail.com 3 288 05-08-2017, 09:27 AM
آخرین ارسال: Geppeto

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.