Аутентификация пользователя по электронной почте с помощью Sentinel

Есть ли способ аутентифицировать пользователя по электронной почте/ссылке/коду в Cartalyst Sentinel?

Я создаю простую регистрацию пользователя в Laravel 5.1, которая отправляет электронное письмо с активацией после регистрации. Нажав на ссылку, я хотел бы активировать и аутентифицировать пользователя одним и тем же действием, но мне это не удалось.

Кажется, единственный способ передать учетные данные (Sentinel::($credentials)), но у меня есть только $code и $id, необходимые для активации, и он запрашивает пароль (кстати, это было бы немного небезопасно при отправке по электронной почте).

Есть какой-либо способ сделать это? Заранее спасибо!


person henriale    schedule 04.08.2015    source источник


Ответы (1)


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

$user = Sentinel::findById($id);

Sentinel::login($user);

Весь процесс должен выглядеть примерно так:

$user = Sentinel::findById($id);

if ( ! Activation::complete($user, $activationCode))
{
    // ERROR - Invalid or expired activation code.
}

// Login the User
Sentinel::login($user);

// Redirect to where you want to take them
person Jeemusu    schedule 04.08.2015
comment
Спасибо! Я пробовал это один раз без успеха по какой-то причине, но теперь он работает нормально. Спасибо! - person henriale; 04.08.2015