[英]Password should not be update if user not give any value in password field laravel 5.3
我正在編輯配置文件,如果用戶現在未在密碼字段中輸入任何值,則我希望密碼不應該更新,如果用戶未輸入任何值,則密碼會自動更新
這是我的方法
{
$this->validate($request, [
'name' => 'required|max:255',
]);
$user = User::findOrFail($id);
$input = $request->all();
$user->fill([
'name' => $request->input('name'),
'password' => bcrypt($request->input('password')),
'def_timezone' => $request->input('def_timezone'),
'address_line_1' => $request->input('address_line_1'),
])->save();
session()->flash('msg',trans('successfully Updated.'));
}
請幫助解決問題謝謝
你可以這樣做:
'password' => $request->password ? bcrypt($request->password) : $user->password,
另外,您可以使用update()
方法代替fill()
和save()
。 通過這種方法,空值將被忽略:
$user->update($request->all());
您必須在編輯驗證中執行以下操作
'password' => 'min:6|max:50',
因此,用戶無法向您的數據庫發送空密碼:
如果您想在更新用戶密碼之前進行檢查,最好在視圖中輸入另一個字段Old_password,以便您可以檢查用戶是否記得舊密碼並可以將其更改為新密碼。 這是我的更新功能示例:
public function update(Request $request, $id)
{
$update_user = Validator::make($request->all(), [
'name' => 'min:2|max:35|string',
'surname' => 'min:2|max:35|string',
'email' => Sentinel::inRole('Admin')?'required|email|min:3|max:50|string':(Sentinel::check()?'required|email|min:3|max:50|string|unique:users,email,'.$id:'required|email|min:3|max:50|unique:users|string'),
'old_password' => 'min:6|max:50',
'new_password' => 'min:6|max:50',
]);
if ($update_user->fails()) {
return redirect()->back()
->withErrors($update_user)
->withInput();
}
$user = User::find($id);
if ($user) {
if(!empty($request->file('image'))){
$file = $request->file('image');
$destinationPath = public_path() . '/upload-client/profile_image';
$filename = str_random(6) . '_' . $file->getClientOriginalName();
$unwanted = array("\'", "+", "%");
$filename =str_replace($unwanted, "", $filename);
$uploadSuccess = $file->move($destinationPath, $filename);
$user->image_path=$filename;
}
if($request->name){
$user->name=$request->name;
}
if($request->email){
$user->email=$request->email;
}
if($request->old_password){
if (Hash::check($request->old_password, $user->password)){
$user->password=bcrypt($request->new_password);
}else{
Session::flash('message', 'Your old password is incorrect.');
Session::flash('status', 'error');
return redirect()->back()->withErrors(['old_password', 'your old password is incorrect']);
}
}
$user->update();
if ($request->role) {
$user->roles()->sync([$request->role]);
}
Session::flash('message', 'Success! User is updated successfully.');
Session::flash('status', 'success');
}
return redirect()->back();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.