更改密码用户 laravel 5.3

新手上路,请多包涵

我想用 laravel 5 创建带有 3 个字段(old_password、new_password、confirm_password)的表单。

看法

旧密码: {!! Form::password('old_password',['class' => 'form-control']) !!}

新密码: {!! Form::password('password',['class' => 'form-control']) !!}

确认新密码: {!! Form::password('verify_password',['class' => 'form-control']) !!}

用户注册时的控制器

public function postRegister(Request $request)
{
    $rules = [
        'email'             =>  'required|email|unique:users',
        'confirm_email'     =>  'required|same:email',
        'password'          =>  'required|min:8|regex:/^(?=\S*[a-z])(?=\S*[!@#$&*])(?=\S*[A-Z])(?=\S*[\d])\S*$/',
        'verify_password'   =>  'required|same:password',
    ];

    $messages = [
        'email.required'            => 'email tidak boleh kosong',
        'password.required'         => 'password tidak boleh kosong',
        'password.min'              => 'Password harus minimal 8 karakter',
        'password.regex'            => 'Format password harus terdiri dari kombinasi huruf besar, angka dan karakter spesial (contoh:!@#$%^&*?><).',
        'verify_password.required'  => 'Verify Password tidak boleh kosong',
        'email.email'               => 'Format Email tidak valid',
        'email.unique'              => 'Email yang anda masukkan telah digunakan',
        'verify_password.same'      => 'Password tidak sama!',
    ];

    $this->validate($request,$rules,$messages);

    $newUser = $this->user->create([
        'email'         =>  $request->email,
        'password'      =>  \Hash::make($request->password),
    ]);
    $this->activationService->sendActivationMail($newUser);

    return redirect('/account/login')->with('success', 'Check your email');
}

我是 laravel 的新手,我读过一些类似的问题来更改 stackoverflow 中的密码,但这对我没有帮助。

我应该如何在我的控制器中编写代码以更改密码用户?提前致谢。

原文由 ardi gunawan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 650
2 个回答

这是更改密码表格

<form id="form-change-password" role="form" method="POST" action="{{ url('/user/credentials') }}" novalidate class="form-horizontal">
  <div class="col-md-9">
    <label for="current-password" class="col-sm-4 control-label">Current Password</label>
    <div class="col-sm-8">
      <div class="form-group">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input type="password" class="form-control" id="current-password" name="current-password" placeholder="Password">
      </div>
    </div>
    <label for="password" class="col-sm-4 control-label">New Password</label>
    <div class="col-sm-8">
      <div class="form-group">
        <input type="password" class="form-control" id="password" name="password" placeholder="Password">
      </div>
    </div>
    <label for="password_confirmation" class="col-sm-4 control-label">Re-enter Password</label>
    <div class="col-sm-8">
      <div class="form-group">
        <input type="password" class="form-control" id="password_confirmation" name="password_confirmation" placeholder="Re-enter Password">
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-5 col-sm-6">
      <button type="submit" class="btn btn-danger">Submit</button>
    </div>
  </div>
</form>

创建规则

public function admin_credential_rules(array $data)
{
  $messages = [
    'current-password.required' => 'Please enter current password',
    'password.required' => 'Please enter password',
  ];

  $validator = Validator::make($data, [
    'current-password' => 'required',
    'password' => 'required',
    'password_confirmation' => 'required|same:password',
  ], $messages);

  return $validator;
}

用户控制器更改密码的方法

使用验证器;

 public function postCredentials(Request $request)
{
  if(Auth::Check())
  {
    $request_data = $request->All();
    $validator = $this->admin_credential_rules($request_data);
    if($validator->fails())
    {
      return response()->json(array('error' => $validator->getMessageBag()->toArray()), 400);
    }
    else
    {
      $current_password = Auth::User()->password;
      if(Hash::check($request_data['current-password'], $current_password))
      {
        $user_id = Auth::User()->id;
        $obj_user = User::find($user_id);
        $obj_user->password = Hash::make($request_data['password']);
        $obj_user->save();
        return "ok";
      }
      else
      {
        $error = array('current-password' => 'Please enter correct current password');
        return response()->json(array('error' => $error), 400);
      }
    }
  }
  else
  {
    return redirect()->to('/');
  }
}

原文由 Komal 发布,翻译遵循 CC BY-SA 4.0 许可协议

您也可以使用此代码重置密码。

 public function passwordReset(Request $request)
{
    $input = $request->all();
    $validated = $request->validate(
        [
            'current_password' => 'required',
            'password' => 'required|confirmed'
        ]
    );
    //Change Password
    $username = Auth::user();
    $name = $username->username;
    $currentpassword = $input['current_password'];
    $password = $input['password'];
    $result = DB::table('user_security')
        ->where('username', $name)
        ->get();

    $cpassword =  $result[0]->password;
    if (Hash::check($currentpassword, $cpassword)) {
        $insert = DB::table('user_security')
            ->where('username', $name)
            ->update([
                'password' =>  Hash::make($password)
            ]);
        return redirect('viewprofile');
    } else {
        return redirect('changepassword');
    }
}

原文由 Ajith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题