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

Класс Password

Класс Password в Laravel используется для генерации и отправки ссылок для сброса пароля, а также для проверки и выполнения сброса пароля пользователей. Он работает через фасад Password и предоставляет удобные методы для интеграции с системой аутентификации. Основные методы класса: sendResetLink - отправляет ссылку для сброса на email, reset - выполняет сброс пароля с проверкой токена. Все методы возвращают объект ответа с результатом операции.

Синтаксис

<?php use Illuminate\Support\Facades\Password; $status = Password::sendResetLink($credentials); $status = Password::reset($credentials, $callback); ?>

Метод sendResetLink принимает массив с данными пользователя, содержащий поле 'email'. Метод reset принимает массив с данными для сброса (email, password, password_confirmation, token) и колбэк-функцию для обновления пароля пользователя.

Пример отправки ссылки для сброса пароля

Давайте отправим ссылку для сброса пароля пользователю по email:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Password; use Illuminate\Http\Request; class PasswordResetController extends Controller { public function sendResetLink(Request $request) { $request->validate(['email' => 'required|email']); $status = Password::sendResetLink( $request->only('email') ); if ($status === Password::RESET_LINK_SENT) { return response()->json([ 'message' => 'Reset link sent successfully' ]); } else { return response()->json([ 'error' => 'Unable to send reset link' ], 422); } } } ?>

Результат выполнения кода при успешной отправке:

{ "message": "Reset link sent successfully" }

Результат выполнения кода при ошибке:

{ "error": "Unable to send reset link" }

Пример выполнения сброса пароля

Давайте обработаем запрос на сброс пароля с проверкой токена:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Password; use Illuminate\Http\Request; use App\Models\User; class PasswordResetController extends Controller { public function resetPassword(Request $request) { $request->validate([ 'token' => 'required', 'email' => 'required|email', 'password' => 'required|min:8|confirmed', ]); $status = Password::reset( $request->only('email', 'password', 'password_confirmation', 'token'), function (User $user, string $password) { $user->forceFill([ 'password' => bcrypt($password) ])->save(); $user->save(); } ); if ($status === Password::PASSWORD_RESET) { return response()->json([ 'message' => 'Password reset successfully' ]); } else { return response()->json([ 'error' => 'Invalid token or email' ], 422); } } } ?>

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

{ "message": "Password reset successfully" }

Результат выполнения кода при ошибке валидации:

{ "error": "Invalid token or email" }

Пример использования с брокером

Давайте укажем конкретный брокер для сброса пароля:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Password; use Illuminate\Http\Request; use App\Models\User; class PasswordResetController extends Controller { public function resetWithBroker(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required|min:8|confirmed', 'token' => 'required', ]); $status = Password::broker('users')->reset( $request->only('email', 'password', 'password_confirmation', 'token'), function (User $user, string $password) { $user->password = bcrypt($password); $user->save(); } ); if ($status === Password::PASSWORD_RESET) { return response()->json([ 'status' => 'success', 'message' => 'Password has been reset' ]); } else { return response()->json([ 'status' => 'error', 'message' => 'Failed to reset password' ], 422); } } } ?>

Результат выполнения кода:

{ "status": "success", "message": "Password has been reset" }

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

  • класс Auth,
    который управляет аутентификацией пользователей
  • метод Hash::make,
    который хеширует пароли для безопасного хранения
  • метод Auth::attempt,
    который пытается аутентифицировать пользователя
  • посредник auth,
    который защищает маршруты от неавторизованных пользователей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить