我正在構建Laravel 5.3應用程序並使用laravel的basic auth
(artisan make:auth
)。現在,「忘記密碼」功能可以正常工作,所以如果用戶由於不知道密碼而無法登錄,他可以通過郵件重置密碼。但現在我希望登錄的用戶也可以更改他們的密碼。我發現that,但這並不能真正幫助我。我也知道有ResetsPasswords
的特質,但我該如何使用它?那麼我是否也有一個觀點可以使用?Laravel 5.3更改密碼
有人可以幫我嗎?
我正在構建Laravel 5.3應用程序並使用laravel的basic auth
(artisan make:auth
)。現在,「忘記密碼」功能可以正常工作,所以如果用戶由於不知道密碼而無法登錄,他可以通過郵件重置密碼。但現在我希望登錄的用戶也可以更改他們的密碼。我發現that,但這並不能真正幫助我。我也知道有ResetsPasswords
的特質,但我該如何使用它?那麼我是否也有一個觀點可以使用?Laravel 5.3更改密碼
有人可以幫我嗎?
你實際上並不需要使用默認密碼控制器來實現這一點,你可以編寫自己的函數來得到相同的結果,例如:
public function postUpdatePassword() {
$user = Auth::user();
$password = $this->request->only([
'current_password', 'new_password', 'new_password_confirmation'
]);
$validator = Validator::make($password, [
'current_password' => 'required|current_password_match',
'new_password' => 'required|min:6|confirmed',
]);
if ($validator->fails())
return back()
->withErrors($validator)
->withInput();
$updated = $user->update([ 'password' => bcrypt($password['new_password']) ]);
if($updated)
return back()->with('success', 1);
return back()->with('success', 0);
}
正如你可以看到我註冊了一個新的自定義的驗證規則,以檢查是否新passowrd匹配的舊人,註冊規則剛剛進入「應用程序/供應商/ AppServiceProvider.php」,並添加到啓動功能的下一行:
Validator::extend('current_password_match', function($attribute, $value, $parameters, $validator) {
return Hash::check($value, Auth::user()->password);
});
現在驗證規則有效,但您不會收到錯誤消息,以添加錯誤消息你剛剛創建的新規則,你將不得不修改「資源/郎/ EN/validation.php」這些行:
'custom' => [
'current_password' => [
'current_password_match' => 'Current password is incorrect.',
],
],
就是這樣,現在你可以使用這個功能更改當前用戶的密碼:)
如果你想保持你的AppServiceProvider.php文件清理關閉(無論什麼原因;我個人喜歡這些小文件整潔),你可以添加執行以下兩件事情:
1)增加以下到AppServiceProvider.php的引導()方法
Validator::extend('current_password_match', 'App\Validators\[email protected]');
2)添加一個新的文件'app/Validators/PasswordMatch.php'與上面提到的關閉一致。
<?php
namespace App\Validators;
use Hash;
use Auth;
class PasswordMatch
{
public function check($attribute, $value, $parameters, $validator){
return Hash::check($value, Auth::user()->password);
}
}
然後,您可以也驗證規則的郵件添加到您的擴展FormRequest類消息()方法,如:
'current_password_match' => 'Current password is incorrect',
看起來很好,所以現在我只需要一個視圖與領域的形式current_passoword,new_password和new_password_confirm,並將其提交給該函數,是嗎? – nameless
這就是你現在唯一需要做的事情.. –
讓它工作,非常感謝你:) – nameless