Что 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');
}