Java, Groovy on Grails, PHP, Kohana

Блог о программировании на Java, Groovy on Grails, PHP, kohana

Kohana 3.2 и autologin при подтверждении регистрации

При регистрации на различных ресурсах мы, как правило, получаем на email ссылку с кодом для подтверждения регистрации. При подверждении регистрации, просить пользователя снова вводить логин и пароль не всегда оправдано (чего ведь не сделаешь для наших любимых пользователей). Поэтому для того, чтобы пользователь автоматически залогинился, перейдя по ссылке с кодом, нам нужен будет метод:

Auth::instance()->force_login($username)

Например, у нас есть некий action confirm в который мы попадаем по ссылке http://sitename/confirm/312ecvfv13E213, где “312ecvfv13E213” – код подтверждения регистрации:

public function action_confirm()
{
//Получаем код регистрации из нашего роута
$code =  $this->request->param('code');

//Проверяем есть ли пользователь с таким кодом (например в таблицу users
//добавим поле 'code', куда предварительно будем записывать
//сгенерированный код подтверждения)

//содаем объект user
$users = ORM::factory('user');

//находим пользователя с наши кодом подтверждения
$user = $users->where('code', '=', $code)->find();

//Если пользователь существует, то, например, добавляем ему
//роль login (а в случае, когда он еще не подтвердил регистрацию,
//то давать ему роль prelogin или не давать вообще никакой роли)

if ($user->id)
{
//например роль 'login' имеет id=1
$user->add('roles', 1);

//И напоследок - автоматически логиним его на нашем сайте
Auth::instance()->force_login($user->username);

//И можем еще перебросить его на "главную"
$this->request->redirect();

}
  • Recent Posts