Активация аккаунта Yii



questionmarks Как приятно после длительного перерыва снова написать   статейку в свой любимый блог :).
Сегодня, как вы надеюсь помните мы будем делать активацию аккаунта на 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);
        }
    }

Думаю разобраться в коде по комментариям не составит труда.

В следующем выпуске 🙂 будем делать восстановление пароля.

До встречи!



Теги: , ,

Комментарии

  1. Спасибо за уроки, очень помогает при работе. А когда будет следующая часть про восстановление пароля и остальные?

    Reply

  2. А разве не нужно проверять что находится в $_GET[‘key’]) ? Инъекции быть не может?

    Reply

  3. Постараюсь по-быстрее выложить новые статьи.

    Проверять не нужно, yii сам фильтрует.

    Reply

  4. Автор, когда будут новые статьи по yii???

    Reply

  5. Все сделал по инструкции, только вот не хватает авторизации.
    Автор — даешь статью про авторизацию на основе srbac!
    Или хотя бы как прикрутить стандартную авторизацию к srbac

    Reply

  6. Жизненный пример, но я бы немного отрефакторил код.

    Reply

  7. Николай

    Спасибо за статью!
    У меня кстате, это не перезаписывалось:
    $user->status = ‘1’;
    $user->save();
    Как было в бд status = ‘0’,так и осталось.

    Помогло это:
    $user->status = ‘1’;
    $user->save(false); Только так перезаписалось

    Reply

  8. Автор, а что произойдет, если аккаунт не был подтвержден? Надо описать и этот случай.

    Reply

Оставить комментарий