Простое правило проверки внутри модели

Я упоминал здесь 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')

2

Решение

Вам придется расширить валидатор с помощью пользовательского правила. Однако это не должно быть проблемой, если у вас есть свои правила внутри модели. Вы можете расширить валидатор где угодно, и правило будет доступно по всему миру.

Я рекомендую вам добавить новый файл в ваш проект 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'
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]