Я предоставлю вам несколько методов реализации функции смены пароля в Laravel, а также примеры кода. Вот несколько подходов:
Метод 1: использование встроенной системы аутентификации Laravel
Laravel предоставляет предварительно созданную систему аутентификации, включающую функцию сброса пароля. Вы можете использовать этот шаблон для реализации функции смены пароля. Вот пример того, как вы можете его использовать:
-
Создать структуру аутентификации:
php artisan make:auth -
Запустите миграцию, чтобы создать необходимые таблицы:
php artisan migrate -
Добавьте черту
CanResetPasswordв свою модель пользователя:use Illuminate\Contracts\Auth\CanResetPassword; class User extends Authenticatable implements CanResetPassword { use \Illuminate\Auth\Passwords\CanResetPassword; // ... } -
Создайте маршрут для формы смены пароля:
Route::get('/change-password', 'ChangePasswordController@showChangePasswordForm'); Route::post('/change-password', 'ChangePasswordController@changePassword'); -
Создайте
ChangePasswordController:use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; class ChangePasswordController extends Controller { public function showChangePasswordForm() { return view('auth.change-password'); } public function changePassword(Request $request) { $request->validate([ 'current_password' => 'required', 'new_password' => 'required|string|min:8|confirmed', ]); $user = Auth::user(); if (!Hash::check($request->current_password, $user->password)) { return back()->withErrors(['current_password' => 'The current password is incorrect.']); } $user->password = Hash::make($request->new_password); $user->save(); return redirect('/home')->with('success', 'Password changed successfully!'); } } -
Создайте представление смены пароля (
auth/change-password.blade.php) с соответствующими полями формы.
Метод 2. Пользовательская реализация с использованием фасада Hash.
Если вы предпочитаете собственную реализацию, вы можете использовать фасад Hashв Laravel для обработки хеширования и проверки паролей.. Вот пример:
-
Создайте маршрут для формы смены пароля:
Route::get('/change-password', 'ChangePasswordController@showChangePasswordForm'); Route::post('/change-password', 'ChangePasswordController@changePassword'); -
Создайте
ChangePasswordController:use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; class ChangePasswordController extends Controller { public function showChangePasswordForm() { return view('change-password'); } public function changePassword(Request $request) { $request->validate([ 'current_password' => 'required', 'new_password' => 'required|string|min:8|confirmed', ]); $user = Auth::user(); if (!Hash::check($request->current_password, $user->password)) { return back()->withErrors(['current_password' => 'The current password is incorrect.']); } $user->password = Hash::make($request->new_password); $user->save(); return redirect('/home')->with('success', 'Password changed successfully!'); } } -
Создайте представление смены пароля (
change-password.blade.php) с соответствующими полями формы.