РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
592 of 1392 menu

Правило current_password

Правило current_password применяется для валидации полей формы, в которые пользователь вводит свой текущий пароль. Это правило гарантирует, что введённое значение совпадает с паролем аутентифицированного пользователя в системе. Правило полезно при реализации функционала смены пароля, подтверждения критических действий или удаления аккаунта. По умолчанию правило использует охранник (guard) по умолчанию, но вы можете указать конкретный охранник через параметр.

Синтаксис

Правило можно использовать в массиве правил валидации как строку или через класс Rule:

<?php use Illuminate\Validation\Rule; // Как строка 'current_password' => 'current_password' // Через класс Rule 'current_password' => Rule::currentPassword() // С указанием охранника 'current_password' => Rule::currentPassword('admin') ?>

Пример

Давайте создадим запрос на обновление пароля пользователя с проверкой текущего пароля:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; class UpdatePasswordRequest extends FormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ 'current_password' => ['required', 'current_password'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]; } } ?>

Теперь используем этот запрос в контроллере для смены пароля:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Support\Facades\Hash; use App\Http\Requests\UpdatePasswordRequest; class UserController extends Controller { public function updatePassword(UpdatePasswordRequest $request) { $user = auth()->user(); $user->password = Hash::make($request->password); $user->save(); return response()->json(['message' => 'Password updated successfully']); } } ?>

Пример

Валидация текущего пароля через фасад Validator в контроллере без отдельного запроса:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; class ProfileController extends Controller { public function deleteAccount(Request $request) { $validator = Validator::make($request->all(), [ 'current_password' => ['required', 'current_password'], 'confirm' => ['required', 'accepted'], ]); if ($validator->fails()) { return back()->withErrors($validator); } $request->user()->delete(); return redirect('/')->with('message', 'Account deleted'); } } ?>

Пример

Использование правила current_password с указанием конкретного охранника для административной панели:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; class AdminUpdatePasswordRequest extends FormRequest { public function authorize(): bool { return auth()->guard('admin')->check(); } public function rules(): array { return [ 'current_password' => ['required', Rule::currentPassword('admin')], 'new_password' => ['required', 'string', 'min:10', 'confirmed'], ]; } } ?>

Пример

Отображение ошибок валидации для текущего пароля в Blade-шаблоне:

<form method="POST" action="{{ route('password.update') }}"> @csrf <div> <label for="current_password">Current password</label> <input type="password" name="current_password" id="current_password"> @error('current_password') <span>{{ $message }}</span> @enderror </div> <div> <label for="password">New password</label> <input type="password" name="password" id="password"> @error('password') <span>{{ $message }}</span> @enderror </div> <div> <label for="password_confirmation">Confirm password</label> <input type="password" name="password_confirmation" id="password_confirmation"> </div> <button type="submit">Update password</button> </form>

Смотрите также

  • правило required,
    которое делает поле обязательным для заполнения
  • правило confirmed,
    которое проверяет совпадение с полем подтверждения
  • правило password,
    которое проверяет сложность пароля
  • правило min,
    которое проверяет минимальную длину или значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить