2013-08-28 28 views
12

Ich habe bis jetzt eine App mit Login/Register gemacht und es funktioniert einwandfrei. Nach der Registrierung wird eine Willkommens-E-Mail gesendet.Laravel 4: Wie erstelle ich eine Bestätigungsmail?

Aber was ich tun möchte, ist, einen Link zu senden, innerhalb dieser Mail, dass nur nach dem Klicken auf es möglich ist, sich anzumelden.

Wie die gemeinsame Anmeldung E-Mail für Forum etc ..

Jemand kann mir helfen bitte?

Dies ist die postRegister Methode:

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!'); 
} 

Danke

Antwort

26

Hier sind ein paar Hinweise (nicht Gonna den Code für Sie schreiben).

  • Fügen Sie zwei Felder zu Ihrer Benutzertabelle: confirmation, confirmed.
  • Erstellen Sie eine Route in Laravel wie registration/verify/{confirmation}, in der Sie versuchen, einen Benutzer in Ihrem DB mit dem angegebenen Bestätigungscode zu finden (falls gefunden, setzen Sie das Feld confirmed des Benutzers auf 1).
  • Nach der Benutzerregistrierung generieren Sie einen eindeutigen Bestätigungscode (Sie können dazu die str_random() Hilfsfunktion verwenden).
  • Set DB-Eintrag neuer Benutzer entsprechend (confirmation = der Zufallscode, confirmed = 0)
  • Fügen Sie einen Bestätigungs-Link (gebaut nach Ihrer Verifikations Strecke) mit dem erzeugten Bestätigungscode per E-Mail an Ihre neue Benutzer.

Auth Versuche können nun wie folgt geschehen:

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

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

Ist es möglich, eine benutzerdefinierte Nachricht zu setzen, wenn nur falsch bestätigt ist. So erhalten Sie eine Fehlermeldung wie der Account noch nicht registriert ist. –

+1

@Sven B können Sie Redirect :: Route ('eingeschränkt/Bereich') -> mit ('Nachricht', 'Konto ist nicht registriert'); und benutze {{$ message}} in deiner Sicht. – Unnawut

+2

Ich bevorzuge nicht die 'bestätigt' Spalte. Wenn der Benutzer aktiviert ist, entferne ich einfach den Bestätigungscode. Auf diese Weise werden alle Benutzer ohne Bestätigungs-Token aktiviert. –