ورود

View Full Version : سوال در مورد لاگین کاربر و ادمین



barname_newis
شنبه 07 تیر 1393, 10:50 صبح
سلام دوستان
من در حال نوشتن یک فروشگاه با فریمورک yii هستم دو دسته کاربر کلی داریم یک دسته مشتری هستن و یک دسته مدیر
حالا برای لاگین مشتریان از اکشن login استفاده میکنم :

public function actionLogin()
{
if(!Yii::app()->user->getState('userIsCustomer'))
{
$model=new LoginForm('Front');

// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}

// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
$this->redirect(Yii::app()->user->returnUrl);
}

}
// display the login form
$this->render('login',array('model'=>$model));
}else
{
$this->redirect('index.php');
}
}
و برای لاگین مدیران از اکشن adminLogin :


public function actionAdminLogin()
{
if(!Yii::app()->user->getState('userIsAdmin'))
{
$model=new LoginForm('Back');

// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}

// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
$this->redirect('/admin/dashboard/index');
}

}
// display the login form
$this->render('login',array('model'=>$model));
}else
{
$this->redirect('/admin/dashboard/index');
}

}

1- این روش از نظر شما مشکلی نداره ؟
2- یه مشکل بهش خوردم و اونم اینه که مشتریانی که لاگین کردن رو سیستم نمیشناسه و role های @ برای اونها ست نمیشه باید چیکار کنم؟
ممنون میشم راهنمایی کنید

MMSHFE
شنبه 07 تیر 1393, 11:42 صبح
1- بهتره برای مدیریت یک ماژول جدا بسازین و کنترلرها و... رو ببرین اونجا.
2- کلاً اگه از متد لاگین کلاس CWebUser استفاده کرده باشین، نباید مشکلی وجود داشته باشه. چیزی که توی کد شما بنظرم تفاوت داره با حالت عادی، سناریوهای Back و Front هست.

barname_newis
شنبه 07 تیر 1393, 12:45 عصر
من چند وقت پیش همین سوال رو مطرح کردم و یکی از دوستان عزیز فرمودن بهتره از یک radioButton استفاده کنم و مشخص کنه که اطلاعات لاکین رو از کدوم جدول بخونه (منظورم جدول admins و custommers هست ) منم دیدم بهتره از دو اکشن جداگانه استفاده کنم و برای همین این دو اکشن رو در کنترلر site ساختم
من برای قسمت مدیریت سایتم از یک ماژول به نام admin استفاده میکنم و تمام کنترلر ها و ... مربروط به پنل مدیریت سایت در اون قرار داره
ولی نمیدونستم میشه تو ماژول ها هم از CWebUser و لاگین های اینچنینی استفاده کنم
میشه یه مثال در این مورد بزنید؟

MMSHFE
شنبه 07 تیر 1393, 12:49 عصر
لاگین لاگینه دیگه فرقی نداره. فقط شما باید توی ماژول admin اطلاعات کاربرا رو از جدول admin بخونید. کافیه متد اکشن لاگین معمولی رو کپی کنید و موقع ثبت نام چک کنید کاربر admin باشه. البته باید کامپوننت UserIdentity اختصاصی ماژول هم بسازین که تو جدول adminها رو بررسی کنه.

engmmrj
شنبه 07 تیر 1393, 13:42 عصر
http://barnamenevis.org/showthread.php?441213-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%86%D9%86%D8%AF-login-%28%D8%AD%D9%84-%D8%B4%D8%AF%29