email - validar - verificacion de correo laravel
Laravel 4: ¿cómo hacer un correo electrónico de confirmación? (1)
He hecho hasta ahora una aplicación con inicio de sesión / registro y funciona bien. Después del registro, se envía un correo electrónico de bienvenida.
Pero lo que me gustaría hacer es enviar un enlace, dentro de ese correo, que solo después de hacer clic en él, es posible iniciar sesión.
Como el correo electrónico de registro común para foro, etc.
Alguien puede ayudarme por favor?
Este es el método 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!'');
}
Gracias
Aquí hay algunas pistas (no voy a escribir el código para ti).
- Agregue dos campos a su tabla de usuario:
confirmation
,confirmed
. - Cree una ruta en Laravel como
registration/verify/{confirmation}
, en la cual intenta encontrar un usuario en su DB con el código de confirmación dado (si lo encuentra, configure el campoconfirmed
el usuario en 1). - Tras el registro del usuario, genere un código de confirmación único (puede usar la función auxiliar
str_random()
para esto). - Establecer la entrada de DB del nuevo usuario en consecuencia (
confirmation
= el código aleatorio,confirmed
= 0) - Incluya un enlace de verificación (creado según su ruta de verificación) con el código de confirmación generado en su correo electrónico a su nuevo usuario.
Los intentos de autenticación ahora se pueden hacer así:
$user = array(
''username'' => Input::get(''username''),
''password'' => Input::get(''password''),
''confirmed'' => 1
);
if (Auth::attempt($user)) {
// success!
return Redirect::route(''restricted/area'');
}