Я упоминал здесь Laravel 4.2 Правила проверки — текущий пароль должен соответствовать значению БД
Вот мое правило для подтверждения пароля:
public static $ruleschangepwd = array(
'OldPassword' => array( 'required'), // need to have my rule here
'NewPassword' => 'required|confirmed|alphaNum|min:5|max:10'
);
Но у меня есть свои правила в модели
Как я увидел приведенное ниже пользовательское правило в вопросе
Validator::extend('hashmatch', function($attribute, $value, $parameters)
{
return Hash::check($value, Auth::user()->$parameters[0]);
});
$messages = array(
'hashmatch' => 'Your current password must match your account password.'
);
$rules = array(
'current_password' => 'required|hashmatch:password',
'password' => 'required|confirmed|min:4|different:current_password'
);
Возможно ли иметь такое правило?
'OldPassword' => array( 'required', 'match:Auth::user()->password')
Как это или любое простое пользовательское правило, чем указано выше?
Замечания : Поскольку я делаю это в модели, я не могу реализовать вышеупомянутое пользовательское правило в моей модели. (или Если я могу, как я могу сделать это внутри модели)
Могу ли я использовать что-то вроде этого
'OldPassword' => array( 'required' , 'same|Auth::user()->password'),
Но я должен
Hash::check('plain text password', 'bcrypt hash')
Вам придется расширить валидатор с помощью пользовательского правила. Однако это не должно быть проблемой, если у вас есть свои правила внутри модели. Вы можете расширить валидатор где угодно, и правило будет доступно по всему миру.
Я рекомендую вам добавить новый файл в ваш проект app/validators.php
Затем добавьте эту строку в нижней части app/start/global.php
require app_path().'/validators.php';
Сейчас внутри validators.php
определить правило проверки
Validator::extend('match_auth_user_password', function($attribute, $value, $parameters){
return Hash::check($value, Auth::user()->password);
}
(Я немного изменил имя, чтобы оно было более наглядным. Вы, очевидно, можете использовать любое имя, какое захотите)
И после этого добавить match_auth_user_password
к вашим правилам:
public static $ruleschangepwd = array(
'OldPassword' => 'required|match_auth_user_password',
'NewPassword' => 'required|confirmed|alphaNum|min:5|max:10'
);
Других решений пока нет …