Tank Auth: автоматический вход при подтверждении электронной почты - PullRequest
0 голосов
/ 27 января 2012

Я использую Tank Auth и требую, чтобы мои пользователи подтвердили свои адреса электронной почты.После проверки пользователи все еще не вошли в систему. Я хотел бы, чтобы пользователи автоматически входили в систему при активации их учетной записи.

В моей предыдущей версии (доморощенная аутентификация) я написал функцию входа, которая не требовалапароль, который можно было вызвать только в этой ситуации.Тем не менее, я не вижу способа сделать это в Tank Auth.Одним из решений будет кэширование паролей до активации, но я действительно не хочу этого делать ...

Ответы [ 2 ]

1 голос
/ 27 января 2012

Вы можете просто обойти свою систему входа в систему.

Сохранять любой адрес электронной почты ИЛИ псевдоним в cookie.

когда они активируются, захватите cookie, выполните поиск (убедитесь, что они существуют) для пользователя, затем настройте обычный сеанс входа в систему.

Вход в систему - это просто набор правил сеанса.

внутри сценария активации / процесса электронной почты, добавьте

$this->_set_ac_cookie({email});

-

protected function _set_ac_cookie({email})
{
    return $this->input->set_cookie(array(
        'name'  =>  'ac_cookie_'.{email},
        'expire'    =>  '7200', //You may mirror when/if your activation key expires
        'domain'    =>  'yourdomain.com',
        'path'  =>  '/'
    ));
}

проверка cookie существует

protected function _before_activation({email})
{
    return $this->input->cookie('ac_cookie_'.{email})) ? TRUE : FALSE;
    //make sure {email} has a UNIQUE db constraint
}

, когда пользователь нажимает ссылку активации

if($this->_before_activation({email}))
{
        //check user exists AND activation status === false (0)
        //grab the user details from db based on {email}, set activation status to true (1)

        //setup login session
        $this->session->set_userdata(array(
            'logged_in' =>  (int)1,
            'user_id'   =>  {user->id},
            'alias' =>  {user->alias}
        ));

        redirect('dashboard');
}
else
{
    //sorry!
}
1 голос
/ 27 января 2012

Если вы посмотрите на код внутри танка auth, который обрабатывает активацию электронной почты, вы увидите, что он явно отключает пользователя при проверке электронной почты.

https://github.com/ilkon/Tank-Auth/blob/master/application/controllers/auth.php

Строка 243.

Вы можете просто закомментировать $this->tank_auth->logout(); в строке 244, и она должна работать так, как вы хотите, но это было бы плохой практикой.

...