رتبه موضوع:
  • 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
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  جلوگیری از دسترسی کاربران به فولدرها و فایل های وبسایت amindeist 3 50 10-31-2016, 07:09 PM
آخرین ارسال: LavarelUser
Rainbow راهنمایی آرمان صالحی 1 32 10-31-2016, 05:14 AM
آخرین ارسال: LavarelUser
  تعریف guard زهرا 2 88 10-10-2016, 05:10 AM
آخرین ارسال: زهرا
  درخواست کمک برای نصب لاراول روی هاست AhrimanSefid 1 136 09-12-2016, 06:40 AM
آخرین ارسال: agahi
  مشکل در تعریف پروژه جدید لاراولی در php storm feri 3 109 08-07-2016, 05:42 AM
آخرین ارسال: feri
  مشکل در دسترسی به متد های یک کلاس توسط کلاس کنترلر alireza_msl 0 72 06-08-2016, 11:11 PM
آخرین ارسال: alireza_msl
Question دسترسی نداشتن به عکس کاربر abi128 0 59 05-05-2016, 12:40 PM
آخرین ارسال: abi128
  درخواست آموزش کار با پکیج intervention/image Bvk.Programmer 6 491 04-18-2016, 05:52 PM
آخرین ارسال: hamo
  اجازه دسترسی nilufar 1 84 04-03-2016, 06:25 AM
آخرین ارسال: usef.enayati@yahoo.com
  ویرایش اطلاعات کاربری که لاگین کرده laravel 4 164 03-17-2016, 04:57 PM
آخرین ارسال: amirhosseini

پرش به انجمن:


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

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

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