2015-12-06 37 views
0

一旦用户登录到我的应用程序我想让他们更改密码的可能性。我创建了三个输入字段(password_new,password_new_confirmation,password_old)。在我的表单请求我有以下的规则,但它不工作:检查密码输入是否与存储的密码相匹配,使用Laravel 5.1时

$rules['password_new'] = 'required|confirmed|min:6'; 
    $rules['password_old'] = 'required|exists:users,password,email,'. Auth::user()->email; 

这也许是因为密码输入散列的地方作为存储的密码是在散列格式?

所以我想也许使用AUTH ::验证门面如下:

$valid = Auth::validate(['email' => Auth::user()->email, 'password' => Input::get('password_old')]); 
if (! $valid) 
{ 
    // add error to validator 
} 

我的问题是如何将错误添加到校验器实例我的表单请求里面在此改变它 - 以下是验证程序实例?

protected function getValidatorInstance() 
{ 
    $factory = $this->container->make(ValidationFactory::class); 
    if (method_exists($this, 'validator')) { 
     return $this->container->call([$this, 'validator'], compact('factory')); 
    } 
    return $factory->make(
     $this->all(), $this->container->call([$this, 'rules']), $this->messages(), $this->attributes() 
    ); 
} 

当你如下因此使用下面我怎么在此改变上面的验证实例手动创建您可以验证挂钩后应用验证程序:

​​3210

回答

0

根据您的意见我已经改变了我的答案。

检查与人工确认您的密码,你可以这样做:

$valid = $this->validate($request,[ 
    'email' => 'required|exists:users,email', 
    'old_password' => 'required|exists:users,password' 
]); 

,并添加自己的自定义验证消息,打开此文件:

resources/lang/en/validation.php 

找到这些代码:

'custom' => [ 
    'attribute-name' => [ 
     'rule-name' => 'custom-message', 
    ], 
], 

Inside custom您可以添加您自己的验证消息。例如:

'custom' => [ 
    'email' => [ 
     'required' => 'You must give you Email address', 
    ] 
    'old_password' => [ 
     'exists' => 'Invalid password try again', 
    ], 
], 

可以使用:attribute,而不是硬编码的属性名称。例如:Invalid :attribute try againYou must give your :attribute address

希望这会有所帮助。

+0

我的问题是如何覆盖验证器实例,以便我可以向该字段添加错误消息。看到我更新的帖子。 – adam78

+0

您是否想为'password_old'字段创建自定义错误消息? – smartrahat

+0

是的。我需要一个自定义验证来检查password_old是否与存储在数据库中的密码匹配。 – adam78

相关问题