Как приятно после длительного перерыва снова написать статейку в свой любимый блог :).
Сегодня, как вы надеюсь помните мы будем делать активацию аккаунта на yii.
На этом закончим лирическое отступление и перейдем непосредственно к разработке.
И первое, что нам нужно сделать — это добавить действие actionActivation в контроллере defaultController модуля User:
/* * Активация аккаунта * * @param * @return */ function actionActivation() { //TODO делаем активацию }
Все предельно просто.
Теперь я создал представление message.php для вывода сообщений об успешной или не успешной активации аккаунта, вот с таким кодом:
<?php $this->breadcrumbs=array( $breadcrumb, ); ?> <h1><?php echo $messageTitle ?></h1> <div id="content"> <h1><?php echo $messageText ?></h1> </div>
Переменная $messageTitle — получает заголовок сообщения, а переменная $messageText — сам текст сообщения.
Ну и сам код действия:
/* * Активация аккаунта * * @param * @return */ function actionActivation() { if(!empty($_GET['key'])) { $user = User::model()->find('activationKey = :activationKey', array(':activationKey' => $_GET['key'])); // Проверяем существует ли пользователь с данным кодом активации if(!empty($user)) { if($user->status == '1') { $this->render('message', array('breadcrumb' => 'Активация аккаунта', 'messageTitle' => 'Активация аккаунта', 'messageText' => 'Аккаунт уже активирован!')); } else { $user->status = '1'; $user->save(); $this->render('message', array('breadcrumb' => 'Активация аккаунта', 'messageTitle' => 'Активация аккаунта', 'messageText' => 'Аккаунт успешно активирован!')); } } else { // Если нет такого ключа то выводим сообщение об ошибке throw new CHttpException(403, 'Такого пользователя не существует.'); } } else { // Если не передан ключ активации, редиректим обратно $this->redirect(Yii::app()->user->returnUrl); } }
Думаю разобраться в коде по комментариям не составит труда.
В следующем выпуске 🙂 будем делать восстановление пароля.
До встречи!
Спасибо за уроки, очень помогает при работе. А когда будет следующая часть про восстановление пароля и остальные?
Reply
А разве не нужно проверять что находится в $_GET[‘key’]) ? Инъекции быть не может?
Reply
Постараюсь по-быстрее выложить новые статьи.
Проверять не нужно, yii сам фильтрует.
Reply
Автор, когда будут новые статьи по yii???
Reply
Все сделал по инструкции, только вот не хватает авторизации.
Автор — даешь статью про авторизацию на основе srbac!
Или хотя бы как прикрутить стандартную авторизацию к srbac
Reply
Жизненный пример, но я бы немного отрефакторил код.
Reply
Спасибо за статью!
У меня кстате, это не перезаписывалось:
$user->status = ‘1’;
$user->save();
Как было в бд status = ‘0’,так и осталось.
Помогло это:
$user->status = ‘1’;
$user->save(false); Только так перезаписалось
Reply
Автор, а что произойдет, если аккаунт не был подтвержден? Надо описать и этот случай.
Reply