PDA

View Full Version : طراحی بخش admin و مدیریت سایت



desatir7316
جمعه 08 فروردین 1393, 12:49 عصر
سلام
دوستان بخش ادمین سایت من به شکلی هست که یه سری کالا رو مدیریت می کنه و فعلا فقط ادمین ورود به سایت داره، یعنی سایت عضویت نداره
سایر بازدید کننده ها فقط می تونن کالاهارو ببینن و خرید انجام بدن
حالا باید بخش ادمین رو با ماژول بسازم و view و هارو توی بخش معمولی نشون بدم؟
یعنی منظورم اینه که توی ماژول create,read, update, delete داشته باشم و بعد یه کپی از read رو بذارم توی بخش معمولی برای بقیه کاربرا
یه کم نمی دونم چیکار باید بکنم

ممنون می شم کلا بگید چیکار کنم

MMSHFE
جمعه 08 فروردین 1393, 12:56 عصر
نه نیازی نیست. اگه اینطوریه، کافیه دسترسی به متدهای موردنظر رو محدود به @ کنید. اینطوری کسی که لاگین نکرده دسترسی نداره.

desatir7316
جمعه 08 فروردین 1393, 13:05 عصر
آخه بعدا می خوام عضویت هم توی سایت بذارم، برای اون میگم، البته به جای @ میشه از admin هم استفاده کرد؟ حالا اینجوری اگه چندتا ادمین داشته باشیم باید چیکار کنم؟
اگه اشتباه نکم باید دست با دامن rbac بشم، درسته مهندس؟

MMSHFE
جمعه 08 فروردین 1393, 13:19 عصر
میتونید یک ماژول admin بسازین و کنترلرهای دلخواه رو داخلش ایجاد کنید و سطح دسترسی همه اکشنهای تمام کنترلرهای اون ماژول رو فقط محدود به @ کنید و بعد توی متد beforeAction از فایل AdminModule.php که برای شما ساخته میشه، این کد رو بنویسید:

public function beforeControllerAction($controller, $action)
{
if(parent::beforeControllerAction($controller, $action))
{
// this method is called before any module controller action is performed
// you may place customized code here
if(Yii::app()->user->isGuest || !in_array(Yii::app()->user->id, array(1, 3, 4))) {
throw new CHttpException(403, 'دسترسی غیر مجاز');
}
return true;
}
else
return false;
}
و بجای 1 و 3 و 4، آرایه id کاربران مجاز رو بگذارین. اینطوری هر کسی بجز این کاربران بخواد دسترسی پیدا کنه با خطای دسترسی غیرمجاز مواجه میشه.

desatir7316
جمعه 08 فروردین 1393, 13:23 عصر
ظاهرا من یه کم توی مفاهیم دچار مشکل هستم
این rbac چه موقع به کار میاد و باید ازش استفاده کنیم؟

bestirani2
یک شنبه 10 فروردین 1393, 20:16 عصر
ظاهرا من یه کم توی مفاهیم دچار مشکل هستم
این rbac چه موقع به کار میاد و باید ازش استفاده کنیم؟
ماژول بندی برای پروژه های بزرگ هست. اگه پروژتون کوچیک هست بگذارید همه قسمت ها یک جا بمونه ولی اگه پروژتون بزرگه ماژول بندی کنید. وقتی هم ماژوال بندی میکنید. همه چیز به غیر از مواردی که اشتراکی هست رو داخل ماژول ببرید.
مثلا اگه میخواید Front سایت رو از Admin جدا کنید. دو تا ماژول درست میکنید.
مدل هایی که داخل هر دو تا استفاده میشه رو ایجاد میکنید و مدل های اختصاصی هر ماژول رو داخل همون ماژول ایجاد میکنید. حالا میتونید مدل های مشترک هم ارث بری کنید و اگه نیاز به تغییر خاصی بود مجدد داخل اون مدل جدید بدید. مثلاً برای Front تمام attribute ها رو unsafe و برای ادمین همه رو Safe در نظر بگیرید.

در مورد RBAC هم بستگی به ابعاد پروژه داره. RBAC برای مدیریت نقش ها و دسترسی استفاده میشیه. اگه پروژه شما ساده هست و چند نقشی ندارید و دسترسی بر اساس نقش انجام میشه نیازی به RBAC ندارید. ولی اگه نیاز دارید هر کاربر بتونه چند تا نقش بگیره و هر نقش خودش شامل وظایف و عملکردهایی بشه باید از RBAC استفاده کنید.

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

بعد میای وظایف زیر رو تعریف میکنید.
مدیریت اخبار به صورت کامل که همه کاری میشه انجام داد.
مدیریت اخبار به صورت جزئی که فقط میتونی اخبار ارسال شده توسط خودش رو ویرایش و حذف کنه

حالا فرض کنید همین مراحل رو برای مقالات و گالری عکس هم طی کردید

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

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