2016-04-13 29 views
-1

をapplicaitonシナリオです:私は、ランダムなハッシュパスワードを行っているLaravelは:laravelでハッシュパスワードでログインする方法ここでは

と私はログインの詳細とユーザーのメールに送信する(例えば、メール)。ユーザーはメールを受け取りましたが、そのハッシュパスワードでサイトにログインできませんでした。これをどうすれば解決できますか?

は、ここに私のコントローラです:

public function sendEmail(Request $request, $id) 
    { 
     $user = User::findOrFail($id); 
      $user->password=Hash::make(str_random(4)); 

     $user->update($request->all());  

     Mail::send('mail', ['user' => $user], function ($m) use ($user) { 
       $m->from('xxxxxx.com', 'xxx'); 
       $m->to($user->email, $user->name)->subject('Thanks!'); 
     }); 
    } 

どれ可能提案して下さい!

答えて

0

パスワードをハッシュする前に変数に格納し、エンドユーザーに送信することができます。

public function sendEmail(Request $request, $id) 
{ 
    $user     = User::findOrFail($id); 
    $user->passwordToBeSend = str_random(4); 
    $user->password   = Hash::make($newPassword); 
    $user->update($request->all()); 
    Mail::send('mail', ['user' => $user], function ($m) use ($user) { 
      $m->from('xxxxxx.com', 'xxx'); 
      $m->to($user->email, $user->name)->subject('Thanks!'); 
    }); 
} 

新しいパスワード($ newPassword)をメール送信ブロックに送信してください。または、$ user-> passwordTomail = $ newPassword;のような新しいオブジェクトとして$ userに割り当てます。

+0

どうすればよいですか?コントローラを介してmail.blade.phpファイルに$ newPasswordをどのように送信するのですか? – User57

+0

あなたは配列としてブレードに渡すことができ、メール送信クロージャで 'use'ブロックを介して渡すことができます(あなたのコードに' user 'を渡すのと同じ方法)。とにかく、上記のブロック(更新された回答を参照)を使用し、{{$ password}}をあなたのブレードテンプレートの{{$ passwordToBeSend}}に置き換えることができます。 – VipindasKS

0

提供されているlaravelを使用する代わりに、独自のログイン機能を作成する必要があります。 laravelはすでにあなただけ使用するphp artisan make:authを入力することができますビルドでパスワードリセット機能を提供して、基本的には、データベースからユーザーを取得し、

function login($id, $password) {  
    $user = User::where('id',$id)->where('password',$password)->first(); 
    if($user){ 
     Auth::login($user); 
    } 
} 

をハッシュ別せずに直接それを比較しかし、それは良い習慣ではありません。詳細についてはofficial documentを確認できます

関連する問題