2013-08-28 14 views
12

Şimdiye kadar giriş/kayıt olan bir uygulama yaptım ve iyi çalışıyor. Kayıttan sonra karşılama e-postası gönderilir.Laravel 4: Onay e-postası nasıl yapılır?

Ama yapmak istediğim, o postada, yalnızca tıkladıktan sonra, giriş yapmanın mümkün olduğu bir bağlantı göndermektir. forum vb için ortak kayıt e-posta gibi

..

Birisi bana lütfen yardımcı olabilir?

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

(sizin için kod yazmak vermeyeceğim) İşte size

cevap

26

ederiz birkaç ipuçlarıdır:

Bu postRegister yöntemidir.

  • kullanıcı tabloya iki alanı ekleyin: confirmation, confirmed.
  • Laravel'de registration/verify/{confirmation} gibi bir yol oluşturun ve DB'nizde bir kullanıcı için verilen onay kodunu kullanarak bulun (varsa, kullanıcının confirmed alanını 1 olarak ayarlayın).
  • Kullanıcı kaydı üzerine, benzersiz bir onay kodu oluşturun (bunun için str_random() yardımcı işlevini kullanabilirsiniz). buna göre Yeni kullanıcının
  • Set DB giriş (confirmation = rastgele kod, confirmed = 0)
  • yeni kullanıcıya e-postanıza oluşturulan onay kodu ile (doğrulama yoluna göre inşa edilmiş) bir doğrulama bağlantı ekleyin.

Kimlik Doğrulama girişimleri artık böyle yapılabilir:

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

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

teyit yanlışsa mümkün özel bir mesaj ayarlamak için mi. Bu yüzden hesap henüz kayıtlı değil gibi bir hata mesajı alırsınız. –

+1

@Sven B Yönlendirme :: rotası ('kısıtlı/alan') -> ile ('mesaj', 'Hesap kayıtlı değil') yapabilirsiniz; ve görünümünüzde {{$ message}} kullanın. – Unnawut

+2

'Onaylandı' sütunu kullanmamayı tercih ediyorum. Kullanıcı aktif olduğunda onay kodunu kaldırırım. Bu şekilde, onay_token olmayan tüm kullanıcılar etkinleştirilir. –