CakePHP Первый вход - PullRequest
       1

CakePHP Первый вход

2 голосов
/ 29 апреля 2011

Я некоторое время занят системой входа в CakePHP.

У меня есть сайт, где люди могут присоединиться и войти. То, что я хочу, - если пользователи входят в первый раз, пользователь должен выполнить определенные шаги с информацией, которая должна быть завершена.

Я думал создать в моей базе данных поле с активным 1 или 0. Когда пользователь выполняет шаги, профиль был активирован и никогда не будет отображаться при первом входе на страницу.

Например, Добро пожаловать «Пользователь», Информация моего профиля -> Связаться с нами -> Информация о приложении
-> Активировать свою учетную запись

Может кто-нибудь дать мне несколько фрагментов, чтобы сделать это.

Большое спасибо!

  <?php

    class UsersController extends AppController {

        var $name = 'Users';

        function beforeFilter() {
            parent::beforeFilter();

            // Rights for the admin users 
            $this->Auth->mapActions(
                array(
                    'create' => array('admin_add'),
                    'read' => array('index', 'admin_index')
                )
            );

            // Everybody can login
            $this->Auth->allow(array('login'));

            // Apply ucfirst (Capital) & strolower (small text) to the username
            if (isset($this->data['User']['username'])) {
                $this->data['User']['username'] = ucfirst(strtolower($this->data['User']['username'])); 
            }

        }

        function login() {

            // Check if the user is logged in correctly, then update the date/time from this login
            if ($this->Auth->User()) {

                // Update the login date
                $this->User->save(array(
                    'id' => $this->Session->read('Auth.User.id'),
                    'last_login' => date('Y-m-d h:i:s')
                )); 

                // Get the group name
                $group = $this->User->Group->findById($this->Session->read('Auth.User.group_id'));


                // Set the redirect if the user has logged in as Administrator
                if ($group['Group']['name'] == 'Admins') { 
                    $this->redirect(array('controller' => 'posts', 'action' => 'index'));
                }
            }


            // Always redirect the user to the homepage 
    //      $this->redirect(array('controller' => '', 'action' => ''));


            pr($this->Session->read('Auth'));

        }


        function logout() {
            $this->redirect($this->Auth->logout());
        }

        function admin_index() {
            echo 'It Work's';
        }   

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Используйте активное поле, когда они завершили процесс приветствия.Тем не менее, вам нужно что-то, чтобы отслеживать каждый шаг процесса.Что если они попадут на вторую страницу процесса и их компьютер отключится?

У меня была бы таблица, которая отслеживает прогресс.Каждый шаг добавляется, когда новый пользователь завершает его.Когда все шаги завершены, обновите поле ACTIVE в записи в таблице USER (указывая, что они выполнили все шаги), а затем удалите информацию о ходе выполнения из таблицы, которая отслеживает его.он увидит, что у них установлен флаг ACTIVE, и пропустит процесс приветствия.Однако, если они прошли только частично, поле ACTIVE все равно будет отображать 0, а таблица прогресса покажет вам, где они остановились.

0 голосов
/ 29 апреля 2011

Да, вы можете создать поле в таблице пользователей ... и вы можете использовать метод beforeFilter() в вашем AppController, чтобы проверить, подключен ли пользователь, и поле активации установлено в 1 или 0. Если пользователь не активирован, перенаправьте на вашу форму или все, что вам нужно сделать ... как только все будет правильно, измените активное поле на 1 ... и все

Просто будьте осторожны в методе beforeFilter (), вам не нужно перенаправлять пользователя, если текущая страница является страницей формы активации .. потому что это создаст бесконечный цикл перенаправлений

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...