From afe651e6391ef52a5dfd9b6db740333f2940e9ca Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Wed, 22 Jan 2025 19:06:12 +0100 Subject: [PATCH] Reset password fini --- .../Auth/NewPasswordController.php | 47 ++++---- app/Http/Controllers/UserController.php | 2 + resources/js/Layouts/Layout.vue | 2 +- resources/js/Pages/Admin/User/Create.vue | 2 +- resources/js/Pages/Album/Partials/Create.vue | 2 +- resources/js/Pages/Auth/ConfirmPassword.vue | 7 +- resources/js/Pages/Auth/ForgotPassword.vue | 2 +- resources/js/Pages/Auth/Login.vue | 10 +- resources/js/Pages/Auth/Register.vue | 112 ------------------ resources/js/Pages/Auth/ResetPassword.vue | 22 +--- resources/js/Pages/Auth/VerifyEmail.vue | 19 ++- resources/js/Pages/Photo/Partials/Create.vue | 2 +- resources/js/Pages/Profile/Edit.vue | 6 +- .../Partials/UpdateProfileInformationForm.vue | 8 +- 14 files changed, 57 insertions(+), 186 deletions(-) delete mode 100644 resources/js/Pages/Auth/Register.vue diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php index 394cc4a..a9b73f9 100644 --- a/app/Http/Controllers/Auth/NewPasswordController.php +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -3,9 +3,13 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\User; +use Carbon\Carbon; +use DateTime; use Illuminate\Auth\Events\PasswordReset; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Password; use Illuminate\Support\Str; @@ -19,10 +23,12 @@ class NewPasswordController extends Controller /** * Display the password reset view. */ - public function create(Request $request): Response + public function create(Request $request) { + $reset = DB::table("password_reset_tokens")->where("token", $request->token)->whereDate("created_at", '>=', (new DateTime())->modify('-1 day')->format("Y-m-d H:i:s"))->first(); + if(!$reset || !$reset->email) return redirect(route("login"))->withErrors(["email" => "Le lien de réinitialisation n'est plus valide ou a été corrompu."]); return Inertia::render('Auth/ResetPassword', [ - 'email' => $request->email, + 'email' => $reset->email, 'token' => $request->route('token'), ]); } @@ -37,33 +43,28 @@ public function store(Request $request): RedirectResponse $request->validate([ 'token' => 'required', 'email' => 'required|email', - 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'password' => 'required|confirmed', ]); - // Here we will attempt to reset the user's password. If it is successful we - // will update the password on an actual user model and persist it to the - // database. Otherwise we will parse the error and return the response. - $status = Password::reset( - $request->only('email', 'password', 'password_confirmation', 'token'), - function ($user) use ($request) { - $user->forceFill([ - 'password' => Hash::make($request->password), - 'remember_token' => Str::random(60), - ])->save(); + $reset = DB::table("password_reset_tokens") + ->where("token", $request->token) + ->whereDate("created_at", '>=', (new DateTime())->modify('-1 day') + ->format("Y-m-d H:i:s"))->first(); - event(new PasswordReset($user)); - } - ); + if(!$reset || !$reset->email) + return redirect(route("login"))->withErrors(["email" => "Le lien de réinitialisation n'est plus valide ou a été corrompu."]); + + User::where("email", $reset->email)->update([ + 'password' => bcrypt($request->password), + 'remember_token' => Str::random(60), + ]); + DB::table("password_reset_tokens") + ->where("token", $request->token)->delete(); // If the password was successfully reset, we will redirect the user back to // the application's home authenticated view. If there is an error we can // redirect them back to where they came from with their error message. - if ($status == Password::PASSWORD_RESET) { - return redirect()->route('login')->with('status', __($status)); - } - - throw ValidationException::withMessages([ - 'email' => [trans($status)], - ]); + + return redirect()->route('login')->with('status', 'Mot de passe réinisialisé succès'); } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index c7be022..7975e29 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -5,6 +5,7 @@ use App\Models\User; use App\Utils\Mail; use App\Utils\Token; +use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; @@ -45,6 +46,7 @@ public function store(Request $request) "email" => $request->email, "name" => $request->name, "totem" => $request->totem, + "email_verified_at" => Carbon::now(), ]); $token = Token::create($user->email); diff --git a/resources/js/Layouts/Layout.vue b/resources/js/Layouts/Layout.vue index 5263443..0a0d77d 100644 --- a/resources/js/Layouts/Layout.vue +++ b/resources/js/Layouts/Layout.vue @@ -54,7 +54,7 @@ const user = usePage().props.auth.user;

{{ user.name }}

- +
diff --git a/resources/js/Pages/Admin/User/Create.vue b/resources/js/Pages/Admin/User/Create.vue index cb95e0c..75f3347 100644 --- a/resources/js/Pages/Admin/User/Create.vue +++ b/resources/js/Pages/Admin/User/Create.vue @@ -40,7 +40,7 @@ const submit = () => {
- + {