احسان رضایی

یک توسعه دهنده

درس های yii2 شماره 16: کنترل سطح دسترسی، Role Based Access یا RBAC

 مفاهیم پایه

Role Based Access Control یا به طور خلاصه RBAC یک سیستم مدیریت دسترسی هاست که در yii2 گنجانده شده. هر نقش(role) در RBAC شامل مجموعه ای از مجوز هاست یک نقش میتونه به یک یا چند کاربر اختصاص داده بشه. به عنوان مثال نقش manage user(مدیریت کاربران) میتونه شامل مجوز های add user, edit user و delete user باشه. به منظور کنترل سطح دسترسی باید مشخص بشه آیا به کاربر جاری نقش یا مجوز لازم اختصاص داده شده یا خیر.

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

به عنوان مثال فرض کنید یک سیستم مدیریت مقالات داریم. کاربران این سیستم شامل سه گروه میشن:

  1. کاربران عادی که میتونن مقالات رو بخونن یا مقاله ارسال کنن.
  2. ناظم هایی که میتونن مقالات ارسال شده توسط گروه اول رو ویرایش، تایید و یا حذف کنن.
  3. مدیرانی که میتونن هر کاری انجام بدن از جمله مدیریت کاربران و...

در این مثال برای گروه اول نیازی نیست سطح دسترسی تعریف کنیم و یا اینکه مجوزی مورد بررسی قرار بگیره! چون تمام کاربران باید بتونن مقالات رو بخونن و یا مقاله ارسال کنن.

برای گروه دوم میشه یک نقش تعریف کرد با عنوان managing articles و برای گروه سوم هم که قراره کاربران رو مدیریت کنن نقش managing users رو داریم. نقش ها و مجوز ها باید به صورت سلسله مراتبی تعریف بشن چون گروه سوم یا مدیران ما علاوه بر مدیریت کاربران باید بتونن مقالات رو هم ویرایش، تایید و یا حذف کنن یعنی نقش های گروه دوم رو هم باید داشته باشن پس طرح سلسله مراتبی ما چیزی مثل تصویر زیر خواهد شد:

rbac

ادامه...

کتاب‌ها

کتاب الگوهای طراحی به بیان ساده(design patterns / دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

طرح های از پیش ساخته شده‌ای که می‌توانید برای حل مشکلات آن‌ها را سفارشی کنید. شما نمی‌توانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آن‌ها را در برنامه خود پیاده‌سازی کنید.

کتاب refactoring / ریفکتورینگ

Refactoring مجموعه‌ای از تکنیک‌هاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام می‌شود.

در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.

refactoring یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد.