2017-01-22 3 views
2

Есть ли доступные правила проверки, которые позволяют сравнивать поле ввода и столбец в базе данных, если они соответствуютесть ли доступные правила валидации для старого пароля?

как они должны соответствовать идентификатору пользователя и сеансу, а также введенному паролю и паролю в базе данных?

+0

Вы не должны хранить пароли открытым текстом в базе данных, так что вы не должны быть в состоянии использовать любой вид входных правил проверки на пароле, чтобы сравнить его с тем, что в базе данных. –

+0

для сравнения старого и нового использования пароля Hash :: check ($ currentpassword, $ password) – Bugfixer

ответ

0

Вы ищете exists правило:

поле под проверки должны существовать на данной таблице базы данных.

'form_field' => 'exists:table,column' 
+0

что я хочу, если он существует в другой таблице, а совпадение сеанса или идентификатора в столбце id – Christian

+0

Exists - отличный способ сделать это, как бы вы применили его в сценарии @Christian дал относительно сравнения старых паролей и новых паролей? – James

+0

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

0

Наткнулся на это время я искал тот же ответ, как хорошо. Возможно, это немного устарело, но, как упоминает Кристиан в комментариях, решение Alexey позволяет пользователю использовать любой существующий пароль (даже другого пользователя) в базе данных в качестве текущего пароля. Надеюсь, что этот ответ поможет кому-то :)

Так Laravel 5.2 ниже решение работал для меня, как mentioned in the documentation:

'old_password' => 'required|exists:users,password,usr_id,'.$user_id, 

Это может быть, отличается Laravel 5.3+, как Laravel 5.3 documentation имеет следующую проверку для настройки запроса , Я не пробовал это, но это не работает для Laravel 5.2.

use Illuminate\Validation\Rule; 

Validator::make($data, [ 
    'email' => [ 
     'required', 
     Rule::exists('staff')->where(function ($query) { 
      $query->where('account_id', 1); 
     }), 
    ], 
]); 
Смежные вопросы