Подтвердить что ты не робот

Laravel 4: как сделать подтверждение по электронной почте?

Я сделал до сих пор приложение с логином/регистрацией, и он отлично работает. После регистрации отправляется приветственное письмо.

Но то, что я хотел бы сделать, это отправить ссылку в пределах этой почты, которая только после нажатия на нее можно войти в систему.

Как и обычная электронная почта для регистрации на форуме и т.д.

Кто-нибудь может мне помочь?

Это метод postRegister:

public function postRegister()
{
    $input = Input::all();

    $rules = array(
        'username' => 'required',
        'password' => 'required');

    $validation = Validator::make($input, $rules);

    if ($validation->passes()) {

        $password = $input['password'];
        $password = Hash::make($password);

        $user = new User;
        $user->username = $input['username'];
        $user->email = $input['email'];
        $user->password = $password;

            $mailer = new Mailers\UserMailer($user);

                 // var_dump($mailer);

                    $mailer->welcomeMail()->deliver();

                    $user->save();

        return Redirect::to('afterRegister');
    }

    return Redirect::back()->withInput()->withErrors($validation)->with('message', 'Validation Errors!');
} 

Спасибо

4b9b3361

Ответ 1

Вот несколько подсказок (не собираюсь писать код для вас).

  • Добавьте в таблицу пользователя два поля: confirmation, confirmed.
  • Создайте маршрут в Laravel как registration/verify/{confirmation}, в котором вы пытаетесь найти пользователя в своей БД с данным кодом подтверждения (если найдено, установите для пользователя confirmed поле значение 1).
  • После регистрации пользователя создайте уникальный код подтверждения (для этого вы можете использовать вспомогательную функцию str_random()).
  • Установить запись БД нового пользователя соответственно (confirmation= случайный код, confirmed= 0)
  • Включите ссылку подтверждения (построенную в соответствии с маршрутом проверки) с генерированным кодом подтверждения в вашем письме новому пользователю.

Теперь попытки Auth выполняются следующим образом:

$user = array(
        'username' => Input::get('username'),
        'password' => Input::get('password'),
        'confirmed' => 1
);

if (Auth::attempt($user)) {
    // success!
    return Redirect::route('restricted/area');
}