PDA

View Full Version : اعتبار سنجی با پکیج Zizaco/Entrast + خروجی دسترسی های هر کاربر



rahahost
جمعه 18 اردیبهشت 1394, 15:56 عصر
سلام دوستان ، وقتتون بخیر :)

من از یه پکیج واسه سطح دسترسی و ایجاد نقش برای کاربر استفاده کردم :
https://github.com/Zizaco/entrust/tree/1.0




ما 3 تا جدول داریم به اسمه :


نقش ها : roles

دسترسی ها : permissions

دسترسی هر نفش : permission_role


واسه اضافه کردن نقش و دسترسی هیچ مشکلی وجود نداره ، مشکل واسه زمانیه که میخوام دسترسی جدید رو به نقش اضافه کنم ، مثلا یک سطح دسترسی با اسم "نویسنده" میسازم و بهش دسترسی "اضافه کردن خبر" رو میدم .


حالا میخوام به نقشه نویسنده ، دسترسی "ویرایش نوشته" رو هم بدم

وقتی تو صفحه ویرایش نقش "نویسنده" میرم ، تنها میتونم لیست دسترسی هایی که قبلا بهش دادم رو ببینم و باقی بخش ها در دسترس نیست !


چطور میتونم کل دسترسی هارو نمایش بدم و دسترسی هایی که قبلا انتخاب شده بودن رو تیک بزنم ؟
دوتا عکس ضمیمه کردم که گویای سوالم هست :

صفحه اضافه کردن نقش و دسترسی :
http://up.vbiran.ir/uploads/1845914310035203725_perm-add.png

(http://up.vbiran.ir/uploads/1845914310035203725_perm-add.png) صفحه ویرایش نقش :
http://up.vbiran.ir/uploads/38084143100351932546_perm-edit.png

اگه خوده پکیج راهی برای انجام این کار نداره ، فکر کنم باید از Join استفاده کنم !




حالا میخوام با استفاده Join ، اول کل دسترسی هارو در بیارم و بعد دسترسی های که انتخاب شده بود رو تیک بزنم ( از چکباکس استفاده کردم )


ممنون میشم راهنماییم کنید .

tuytoosh
جمعه 18 اردیبهشت 1394, 18:59 عصر
سلام
با استفاده از مدل Permission به راحتی همه ی دسترسی ها رو به view بیارید.
در تابعی که میخواید view رو صدا بزنید یه آرایه درست کنید از آی دی تمام دسترسی هایی که این کاربر داره.(با یه foreach و تابع can() )
این آرایه و کل Permission ها رو با استفاده از تابع is_array() مقایسه کنید و به عنوان آرگومان سوم به متد Form::checkbox بفرستید.(اگه مشکلی تو این مورد دارید این (http://w3team.ir/%D9%84%D9%88%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D9%BE%DB%8C%D8%B4%D9%81%D8%B1%D8%B6-%DA%86%DA%A9%D8%A8%D8%A7%DA%A9%D8%B3-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7/) رو بخونید )

rahahost
جمعه 18 اردیبهشت 1394, 21:14 عصر
سلام
با استفاده از مدل Permission به راحتی همه ی دسترسی ها رو به view بیارید.
در تابعی که میخواید view رو صدا بزنید یه آرایه درست کنید از آی دی تمام دسترسی هایی که این کاربر داره.(با یه foreach و تابع can() )
این آرایه و کل Permission ها رو با استفاده از تابع is_array() مقایسه کنید و به عنوان آرگومان سوم به متد Form::checkbox بفرستید.(اگه مشکلی تو این مورد دارید این (http://w3team.ir/%D9%84%D9%88%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D9%BE%DB%8C%D8%B4%D9%81%D8%B1%D8%B6-%DA%86%DA%A9%D8%A8%D8%A7%DA%A9%D8%B3-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%84%D8%A7%D8%B1%D8%A7/) رو بخونید )


واقعا ممنون ، مشکلمو برطرف کردین و راهه حله خوبی دادین :)
فقط یه موردی بگم :
تابع is_array چک میکنه که متغییر از نوع آرایه هست یا نه در صورتی که ما باید چک کنیم که آی دی درون متغییر هست یا نه که با تابع in_array باید انجام بشه :)

دوستان اگر مشکل مشابهی داشتین و نتیجه نگرفین ، اعلام کنید تا کد رو بطور کامل قرار بدم .

tuytoosh
جمعه 18 اردیبهشت 1394, 21:28 عصر
واقعا ممنون ، مشکلمو برطرف کردین و راهه حله خوبی دادین :)
فقط یه موردی بگم :
تابع is_array چک میکنه که متغییر از نوع آرایه هست یا نه در صورتی که ما باید چک کنیم که آی دی درون متغییر هست یا نه که با تابع in_array باید انجام بشه :)

دوستان اگر مشکل مشابهی داشتین و نتیجه نگرفین ، اعلام کنید تا کد رو بطور کامل قرار بدم .


اشتباه تایپی بود :)