Yii-user запрет на удаление самого себя

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
jekaspekas
Сообщения: 62
Зарегистрирован: 2014.01.29, 13:07

Yii-user запрет на удаление самого себя

Сообщение jekaspekas »

Всем доброго времени суток!
Очень удивился когда при проверке невозможности удаления своего пользователя (под которым авторизовался на сайте) он таки был удален! и дальнейшая работа приложения оказалась невозможной.
Установлены модули Yii-user и Yii-rights. Вот код функции actionDelete() контроллера AdminController модуля User.
Подскажите, пожалуйста, как запретить удаление самого себя.

Код: Выделить всё

    public function actionDelete()
    {
        if(Yii::app()->request->isPostRequest)
        {
            $model = $this->loadModel();
            $profile = Profile::model()->findByPk($model->id);
            $profile->delete();
            $model->delete();
            if(!isset($_POST['ajax']))
                $this->redirect(array('/user/admin'));
        }
        else
            throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
    }
Пробовал проверить что пользователь удаляет не себя, но лезут ошибки:

Код: Выделить всё

            $model = $this->loadModel();
            $profile = Profile::model()->findByPk($model->id);
            if(Yii::app()->user->id=!$model->id){
                $profile->delete();
                $model->delete();
                if(!isset($_POST['ajax']))
                    $this->redirect(array('/user/admin'));
            }
Всем откликнувшимся заранее благодарен!
Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Re: Yii-user запрет на удаление самого себя

Сообщение Barssoft »

Код: Выделить всё

ublic function actionDelete()
    {
        if(Yii::app()->request->isPostRequest)
        {
            $model = $this->loadModel();
if(yii::app->user->id!=$model->id){
            $profile = Profile::model()->findByPk($model->id);
            $profile->delete();
            $model->delete();
            if(!isset($_POST['ajax']))
                $this->redirect(array('/user/admin'));
}else{
throw new CHttpException(403,'Вы не можете удалить сами себя');
}
        }
        else
            throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
    }
 
Так точно не работает?
jekaspekas
Сообщения: 62
Зарегистрирован: 2014.01.29, 13:07

Re: Yii-user запрет на удаление самого себя

Сообщение jekaspekas »

:shock: Работает! Спасибо!
Только я чет понять не могу а в чем принципиальная разница, что одно работает а другое нет. Ну не =! и != точно.
Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Re: Yii-user запрет на удаление самого себя

Сообщение Barssoft »

Код: Выделить всё

}else{
throw new CHttpException(403,'Вы не можете удалить сами себя');
}
 
может в этом? что я исключение вызываю, хотя думаю даже echo "fsdfsdfsd" отработает, но не уверен, незнаю как ajax в гриде работает... Возможно он анализирует, и если пришло исключение то вызывает алерт... В общем тут могут помочь более опытные, кто более глубоко копал
Аватара пользователя
howard
Сообщения: 528
Зарегистрирован: 2012.11.16, 18:55
Откуда: Україна, Вінниця

Re: Yii-user запрет на удаление самого себя

Сообщение howard »

да присвоение потому что, а не сравнение:

Код: Выделить всё

$a = 0;
$b = 1;
var_dump($a = !$b);
var_dump($a != $b);
Агрегатор цен на услуги хостинга - https://hostcost.net
Ответить