Yii redirecting the admin and authenticated user to the desired page

纵饮孤独 提交于 2019-12-23 02:49:17

问题


I am new to yii. I want my admin upon login from webapp/user/login to redirect to the page I want which is localhost/webapp/story right now it is redirecting me to the index.php.

I have also registered a user and given that user a role which is authenticated and I want that when my user(the authenticated user) logs in via webapp/user/login then that user is redirected to index.php.

so there are two things:

1. redirecting admin to the desired page which is webapp/story.
2. redirecting the authenticated user to index.php.

I am using yii user and right extension. Please help me with this. The code LoginController is below:

<?php

class LoginController extends Controller
{
    public $defaultAction = 'login';

    /**
     * Displays the login page
     */
    public function actionLogin()
    {
    if (Yii::app()->user->isGuest) {
        $model=new UserLogin;
        // collect user input data
        if(isset($_POST['UserLogin']))
        {
            $model->attributes=$_POST['UserLogin'];
            // validate user input and redirect to previous page if valid
            if($model->validate()) {
                $this->lastViset();
                if (Yii::app()->user->returnUrl=='/index.php')
                        $this->redirect(Yii::app()->controller->module->returnUrl);
                else// yehen par kuch aye ga according
                    $this->redirect(Yii::app()->user->returnUrl);
            }
        }
        // display the login form
        $this->render('/user/login',array('model'=>$model));
        } else
        $this->redirect(Yii::app()->controller->module->returnUrl);
     }

    private function lastViset() {
    $lastVisit =     User::model()->notsafe()->findByPk(Yii::app()->user->id);
    $lastVisit->lastvisit = time();
    $lastVisit->save();
    }

 }   

回答1:


I think could be somethings like this

<?php

class LoginController extends Controller
{
    public $defaultAction = 'login';

    /**
     * Displays the login page
     */
    public function actionLogin()
    {
    if (Yii::app()->user->isGuest) {
        $model=new UserLogin;
        // collect user input data
        if(isset($_POST['UserLogin']))
        {
            $model->attributes=$_POST['UserLogin'];
            // validate user input and redirect to previous page if valid
            if($model->validate()) {

                $this->lastViset();

                // Old code commentede
                //if (Yii::app()->user->returnUrl=='/index.php')
                //        $this->redirect(Yii::app()->controller->module->returnUrl);
                //else// yehen par kuch aye ga according
                //    $this->redirect(Yii::app()->user->returnUrl);

                // new code
                if (UserModule::isAdmin()){
                    $this->redirect(array('story/index'));
                }  
                else  {
                    $this->redirect(Yii::app()->user->returnUrl);   
                }  


            }
        }
        // display the login form
        $this->render('/user/login',array('model'=>$model));
        } else
        $this->redirect(Yii::app()->controller->module->returnUrl);
     }

    private function lastViset() {
    $lastVisit =     User::model()->notsafe()->findByPk(Yii::app()->user->id);
    $lastVisit->lastvisit = time();
    $lastVisit->save();
    }

 }   


来源:https://stackoverflow.com/questions/33610115/yii-redirecting-the-admin-and-authenticated-user-to-the-desired-page

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!