laravel 5,更新用户密码

Sal*_*lar 6 php validation laravel laravel-5

我正在使用laravel 5开发一个应用程序,允许每个用户更新他的个人资料.
为了更新密码,用户需要先输入旧密码,如果旧密码匹配,则新输入的密码将被散列并存储在DB中.如何使用laravel表单请求验证来验证这一点?

Sal*_*lar 4

我创建了一个自定义验证器并将其添加到 AppServiceProvider 中,如下所示:

<?php

namespace App\Providers;

use Validator;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Hash ;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Validator::extend('password_hash_check', function($attribute, $value, $parameters, $validator) {
            return Hash::check($value , $parameters[0]) ;
        });
    }
Run Code Online (Sandbox Code Playgroud)

然后我在表单请求验证器中使用它,如下所示:

<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class UpdateUserProfileRequest extends Request
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $hashed_password = $this->user()->password ;
        return [
            'oldPassword'=> "password_hash_check:$hashed_password|string|min:6",
            'newPassword' => 'required_with:oldPassword|confirmed|min:6',
        ];
    }
Run Code Online (Sandbox Code Playgroud)