مطابق با ویکی پدیا، سطوح
دسترسی مشخص میکند که کدام کاربران یا سیستم پردازش اجازه دسترسی به اشیاء را
دارند(Authentication)، همچنین چه عملیاتهایی بر روی اشیاء
مجازند که اجرا شوند(Authorization).
در موردجوملا، ما دو جنبه جدا برای سطوح دسترسی
داریم:
1. کدام کاربران به چه بخشهایی میتوانند دسترسی
داشته باشند؟ برای مثال، انتخاب یک منو برای کدام کاربر فعال خواهد بود؟
2. چه عملیات (یا اقداماتی) کاربر میتواند بر روی اشیاء
داشته باشد؟ برای مثال، آیا کاربر میتواند یک مطلب را ارسال یا ویرایش کند؟
ماهیتهای موجود در سیستم :
· کاربران
کاربر
میتواند به گروههای مختلفی اختصاص یابد.
· گروهها کاربری
شامل
مجوزهایی به صورت پیش فرض میباشند که این مجوزها را از سطوح بالایی نیز به ارث میبرند.
· سطوح دسترسی
شامل
یک یا چند گروه کاربری میباشد و سطوح دسترسی به محتواهای سایت نسبت داده میشود
یعنی اگر یک مطلب دارای سطح دسترسی عمومی باشد آنگاه تمامی گروههای کاربری
که در عمومی وجود دارند میتوانند مطلب را مشاهده کنند.
· عملیات و مجوزها
به
صورت پیش فرض یک سری عملیات در سیستم تعریف شده است شامل ویرایش ، حذف و غیره که
برای هر گروه کاربری (تعدادی گروه کاربری به صورت پیش فرض در سیستم تعریف شده است)
به صورت پیش فرض مجوزهایی در نظر گرفته شده است که این مجوزها قابلیت ارث بری از
والد گروه به فرزند رانیز دارا میباشد پس با این حساب همیشه در جوملا والد از سطح
دسترسی پایینتری نسبت به فرزند برخوردار میباشد.
اما
باید گفت در جوملا بهازای هر
کامپوننت نیز میتوان این مجوزها را به ازای گروههای مختلف تغییر داد در این جا
هم هر کامپوننت دارای مجوزهای پیش فرضی میباشد که در هنگام نصب کامپوننت برای
آن در نظر گرفته میشود.
جداول این سیستم :
: users جدول کاربران
usergroups : جدول گروههای کاری یا همان نقشهای کاربری
user_usergroup_map : جدول واسط بین کاربران و گروههای کاری به منظور ایجاد
رابطهی چند به چند (n:n)
assets : این جدول که از جوملا 1.6 به بعد به دیتابیس جوملا افزوده
شده است مهمترین جدول در این سیستم میباشد . که در آن به ازای هر جز که سطح
دسترسی باید برای آن لحاظ گردد یک سطر در نظر گرفته میشود که این سطر باتوجه به
افزایش اجزا سیستم تغییر و به صورت داینامیک به جدول اضافه میگردد ضمنا این سطور
قابلیت ارث بری از یکدیگر را نیز دارا میباشند. در هر بک از سطرها فیلدی به نام rulsوجود دارد محتوای این فیلد از نوع داده ای jsonمیباشد با یک
مثال شاید بهتر بتوان توضیح داد :
محتوای
فیلد کامپوننت بنر :
{"core.admin":{"9":1,"7":1},"core.manage":{"6":1},"core.create":[],"core.delete":[],"core.edit}
در این جا “core.admin” مجوز دسترسی مدیریتی به این کامپوننت میباشد که
گروههای کاری شماره 7 و 9 دارای چنین دسترسی میباشند . ضمنا عملیاتهای "core.create" از سطوح
بالاتر یا همان سطر والد خود ارث بری میکند.
Viewlevel : در این جدول سطوح دسترسی تعریف شده اند مهمترین فیلد این
جدول نیز rulsنام دارد و حاوی id گروه
هایی است که به این سطح دسترسی ، دسترسی دارند.
به طور مثال سطح دسترسی ثبت نام شدهحاوی [6,2,8]میباشد یعنی گروههای کاری با idهای مورد نظر میتوانند به محتواهای با سطح دسترسی ثبت نام شده دسترسی داشته باشند.
دیاگرام جداول :