Что 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 MailersUserMailer($user);

                 // var_dump($mailer);

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

                    $user->save();

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

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

спасибо

1 ответов


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

  • добавить два поля в таблицу пользователей: confirmation, confirmed.
  • создать маршрут в Laravel, как registration/verify/{confirmation}, в котором вы пытаетесь найти пользователя в своей БД с заданным кодом подтверждения (если он найден, установитеconfirmed поле для 1).
  • при регистрации пользователя создайте уникальный код подтверждения (вы можете использовать str_random() вспомогательная функция для этого).
  • установить запись DB нового пользователь соответственно (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');
}