]> _ Git - pmi.git/commitdiff
wait #6033 @5:00 Fix envoie d'email, et suppression du token une fois le mot de passe...
authorsoufiane <soufiane@cubedesigners.com>
Mon, 19 Jun 2023 15:14:29 +0000 (17:14 +0200)
committersoufiane <soufiane@cubedesigners.com>
Mon, 19 Jun 2023 15:14:29 +0000 (17:14 +0200)
12 files changed:
app/Http/Controllers/AjaxController.php
app/Http/Controllers/Client/CustomResetPasswordNotification.php [new file with mode: 0644]
app/Http/Controllers/Client/ForgotPasswordController.php [new file with mode: 0644]
app/Http/Controllers/Client/ResetPasswordController.php [new file with mode: 0644]
app/Http/Controllers/ClientChangePassword.php [deleted file]
app/Http/Controllers/ClientController.php [deleted file]
app/Http/Controllers/ClientForgotPassword.php [deleted file]
app/Models/AuthClient.php
app/User.php
resources/styles/common/global.styl
resources/views/pages/forgot_password.blade.php
routes/web.php

index 7c8fd36f7f94f1178bde90eed6d78a76df0ad5df..39b9a1d9c23ff05836a2fefef24bd61542c3e328 100644 (file)
@@ -645,12 +645,10 @@ class AjaxController extends CubistFrontController
             'text' => 'required|max:255'
         ]);
         $id = $request->input('id');
-        $text = $request->input('text');
+        $newName = $request->input('text');
 
         $cart = Panier::find($id);
-
-        $cart->name = $text;
-
+        $cart->name = $newName;
         $cart->save();
     }
 
diff --git a/app/Http/Controllers/Client/CustomResetPasswordNotification.php b/app/Http/Controllers/Client/CustomResetPasswordNotification.php
new file mode 100644 (file)
index 0000000..626765b
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+namespace App\Http\Controllers\Client;
+
+use Illuminate\Notifications\Messages\MailMessage;
+use Illuminate\Auth\Notifications\ResetPassword;
+
+class CustomResetPasswordNotification extends ResetPassword
+{
+    public function __construct($email,$token)
+    {
+        $this->email = $email;
+        $this->token = $token;
+    }
+
+    public function via($notifiable)
+    {
+        return ['mail'];
+    }
+
+    public function toMail($notifiable)
+    {
+        return (new MailMessage())
+            ->subject(trans('backpack::base.password_reset.subject'))
+            ->greeting(trans('backpack::base.password_reset.greeting'))
+            ->line([
+                trans('backpack::base.password_reset.line_1'),
+                trans('backpack::base.password_reset.line_2'),
+            ])
+            ->action(trans('backpack::base.password_reset.button'), route('password.reset').'?token='.$this->token.'&email='.urlencode($this->email))
+            ->line(trans('backpack::base.password_reset.notice'));
+    }
+}
diff --git a/app/Http/Controllers/Client/ForgotPasswordController.php b/app/Http/Controllers/Client/ForgotPasswordController.php
new file mode 100644 (file)
index 0000000..5930aee
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Http\Controllers\Client;
+
+use App\Models\AuthClient;
+use App\Models\Client;
+use Backpack\Base\app\Notifications\ResetPasswordNotification as ResetPasswordNotification;
+use Carbon\Carbon;
+use Cubist\Backpack\Facades\App;
+use Illuminate\Http\RedirectResponse;
+use Illuminate\Http\Request;
+use Illuminate\Notifications\Messages\MailMessage;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Password;
+
+class ForgotPasswordController
+{
+    public function sendResetLink(Request $request)
+    {
+        $request->validate(['email' => 'required|email']);
+
+        $email = $request->input('email');
+        $client = AuthClient::where('email', $email)->first();
+        $broker = Password::broker();
+        $token = $broker->createToken($client);
+
+        if(!$client)
+            return back()->withErrors(['error' => 'error']);
+
+        $status = DB::table('password_resets')->insert([
+            'email' => $email,
+            'token' => $token,
+            'created_at' => Carbon::now()
+        ]);
+
+        $client->sendPasswordResetNotification($token);
+        return $this->sendResetLinkResponse($status);
+    }
+
+    protected function sendResetLinkResponse($response): RedirectResponse
+    {
+        $message = __("Vous allez recevoir un e-mail vous permettant de réinitialiser votre mot de passe");
+        return $response
+            ? back()->with(['status' => __($response), 'message' => $message])
+            : back()->withErrors(['email' => __($response)]);
+    }
+}
diff --git a/app/Http/Controllers/Client/ResetPasswordController.php b/app/Http/Controllers/Client/ResetPasswordController.php
new file mode 100644 (file)
index 0000000..da3a5ad
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+namespace App\Http\Controllers\Client;
+
+use App\Models\Client;
+use Cubist\Backpack\app\Http\Controllers\CubistFrontController;
+use Cubist\Backpack\app\Magic\Menu\Menu;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Hash;
+
+class ResetPasswordController extends CubistFrontController
+{
+    public function view(Request $request)
+    {
+        $page = Menu::getNavigation()->findOneById(157)->getEntity();
+        $email = $request->get('email');
+        $token = $request->get('token');
+
+        $this->data['page'] = $page->getPageData();
+        $this->data['title'] = 'Changer votre mot de passe';
+        $this->data['token'] = $token;
+        $this->data['email'] = $email;
+
+        $path = "changer-votre-mot-de-passe";
+        $nav = Menu::getNavigation();
+        $item = $nav->findItemWithURL($path,true);
+        $this->data['item'] = $item;
+
+        return view('pages.change_password', $this->data);
+    }
+
+    public function resetPassword(Request $request) {
+        $request['email'] = str_replace('%40', '@', $request->email);
+        $request->validate([
+            'token' => 'required',
+            'email' => 'required|email',
+            'password' => 'required|min:8|confirmed',
+        ]);
+
+        $newPassword = $request->password;
+        $email = $request->email;
+        $token = $request->token;
+
+        // Validate the token
+        $actualToken = DB::table('password_resets')->where('email', $email)->first();
+        $tokenIsValid = Hash::check($token, $actualToken->token);
+        if (!$tokenIsValid) return back()->withErrors(['error' => 'error']);
+
+        // Validate email
+        $client = Client::where('email', $email)->first();
+        if (!$client) return redirect()->back()->withErrors(['email' => __('Email non trouvé')]);
+
+        //Hash and update the new password
+        $client->password = Hash::make($newPassword);
+        $client->update();
+
+        //Delete the token
+        $deleted = DB::table('password_resets')->where('email', $email)->delete();
+
+        return redirect('/se-connecter');
+    }
+}
diff --git a/app/Http/Controllers/ClientChangePassword.php b/app/Http/Controllers/ClientChangePassword.php
deleted file mode 100644 (file)
index d387af6..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace App\Http\Controllers;
-
-use Cubist\Backpack\app\Magic\Menu\Menu;
-use Illuminate\Http\Request;
-use Cubist\Backpack\app\Http\Controllers\CubistFrontController;
-
-class ClientChangePassword extends CubistFrontController
-{
-    public function view(Request $request)
-    {
-        $page = Menu::getNavigation()->findOneById(157)->getEntity();
-        $email = $request->get('email');
-        $token = $request->get('token');
-
-        $this->data['page'] = $page->getPageData();
-        $this->data['title'] = 'Changer votre mot de passe';
-        $this->data['token'] = $token;
-        $this->data['email'] = $email;
-
-        $path = "changer-votre-mot-de-passe";
-        $nav = Menu::getNavigation();
-        $item = $nav->findItemWithURL($path,true);
-        $this->data['item'] = $item;
-
-        return view('pages.change_password', $this->data);
-    }
-}
diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php
deleted file mode 100644 (file)
index f89ab8f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace App\Http\Controllers;
-
-use Cubist\Backpack\app\Magic\Menu\Menu;
-use Cubist\Backpack\app\Magic\Models\CMSPage;
-use Cubist\Backpack\app\Magic\Models\Locale;
-use Cubist\Backpack\app\Magic\Models\Settings;
-use Cubist\Backpack\Facades\App;
-use Illuminate\Http\Request;
-use Illuminate\Http\RedirectResponse;
-use Illuminate\Support\Facades\Auth;
-use Cubist\Backpack\app\Http\Controllers\CubistPageController;
-use Illuminate\Support\Str;
-
-class ClientController extends CubistPageController
-{
-    public function logout(Request $request): RedirectResponse
-    {
-        Auth::guard('web-clients')->logout();
-
-        $request->session()->invalidate();
-
-        $request->session()->regenerateToken();
-
-        return redirect('/se-connecter');
-    }
-}
diff --git a/app/Http/Controllers/ClientForgotPassword.php b/app/Http/Controllers/ClientForgotPassword.php
deleted file mode 100644 (file)
index 5fd2e79..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-namespace App\Http\Controllers;
-
-use App\Models\AuthClient;
-use App\Models\News;
-use App\User;
-use App\Models\Client;
-use Cubist\Backpack\app\Magic\Menu\Menu;
-use Illuminate\Auth\Events\PasswordReset;
-use Illuminate\Support\Facades\Password;
-use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Hash;
-use Illuminate\Support\Str;
-use Cubist\Backpack\app\Http\Controllers\CubistPageController;
-use Illuminate\Support\Facades\DB;
-use Illuminate\Auth\Notifications\ResetPassword;
-use Illuminate\Auth\Passwords\PasswordBroker;
-
-class ClientForgotPassword extends CubistPageController
-{
-    /*
-    |--------------------------------------------------------------------------
-    | Password Reset Controller
-    |--------------------------------------------------------------------------
-    |
-    | This controller is responsible for handling password reset emails and
-    | includes a trait which assists in sending these notifications from
-    | your application to your users. Feel free to explore this trait.
-    |
-    */
-
-    public function test(Request $request) {
-        $request->validate(['email' => 'required|email']);
-
-        $status = Password::sendResetLink(
-            $request->only('email')
-        );
-
-        $message = __("Vous allez recevoir un e-mail vous permettant de réinitialiser votre mot de passe");
-        return $status === Password::RESET_LINK_SENT
-            ? back()->with(['status' => __($status), 'message' => $message])
-            : back()->withErrors(['email' => __($status)]);
-    }
-
-    public function reset(Request $request) {
-        $request['email'] = str_replace('%40', '@', $request->email);
-        $request->validate([
-            'token' => 'required',
-            'email' => 'required|email',
-            'password' => 'required|min:8|confirmed',
-        ]);
-
-        $password = $request->password;
-        $email = $request->email;
-
-        $actualToken = DB::table('password_resets')->where('email', $request->email)->first();
-        $tokenIsValid = Hash::check($request->token, $actualToken->token);
-
-        // Validate the token
-        if (!$tokenIsValid)
-           return back()->withErrors(['error' => 'error']);
-
-        $client = Client::where('email', $email)->first();
-        if (!$client) return redirect()->back()->withErrors(['email' => 'Email non trouvé']);
-
-        //Hash and update the new password
-        $client->password = Hash::make($password);
-        $client->update();
-
-        return redirect('/se-connecter');
-    }
-}
index ea0018915114cf70890f02054bd8d1b3bc30c257..e457608cb9d4f655a3dd556be1886d62e304a815 100644 (file)
@@ -2,11 +2,12 @@
 namespace App\Models;
 
 use Backpack\Base\app\Notifications\ResetPasswordNotification as ResetPasswordNotification;
+use Cubist\Backpack\Facades\App;
 use Illuminate\Auth\Passwords\CanResetPassword;
 use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
-
+use App\Http\Controllers\Client\CustomResetPasswordNotification;
 
 class AuthClient extends Authenticatable implements CanResetPasswordContract
 {
@@ -36,6 +37,6 @@ class AuthClient extends Authenticatable implements CanResetPasswordContract
 
     public function sendPasswordResetNotification($token)
     {
-        $this->notify((new ResetPasswordNotification($token))->locale('fr'));
+        $this->notify((new CustomResetPasswordNotification($this->email, $token))->locale(App::getLocale()));
     }
 }
index f631dea36f3bf880c076a7ac3f577bf842ee76a8..d56e2e97a483be579c9ea7d40ef2ccc2a995ce61 100644 (file)
@@ -37,5 +37,4 @@ class User extends Authenticatable
     {
         $this->notify((new ResetPasswordNotification($token))->locale(App::getLocale()));
     }
-
 }
index c9187e8c01abb4a03e23d849309367c3cb6fc287..8c0b13ebd9846460d83e2ee3bdc8b5b9918fac32 100644 (file)
@@ -68,3 +68,10 @@ $overlap-amount = 10vw
 [v-cloak]
   visibility: hidden
   display: none
+
+/* Change the white to any color */
+input:-webkit-autofill,
+input:-webkit-autofill:hover,
+input:-webkit-autofill:focus,
+input:-webkit-autofill:active
+  -webkit-box-shadow: 0 0 0 30px white inset !important
index 31ab776329866650913b03aab0122805ec8549a2..157c82515935480df531bdadb299dd97a64c09e2 100644 (file)
@@ -8,7 +8,7 @@
                     <h1 class="text-4xl m-0">Mot de passe oublié</h1>
                 </div>
 
-                <form class="form-portal" action="/mot-de-passe-oublie"
+                <form class="form-portal" action="/forgot-password"
                       method="post">
 
                     @csrf
index 731f3d44f85b6b9d84023c040b6c5efb93298862..f0c3b44df10cc168fd44df7cf12864ded8c05537 100644 (file)
@@ -1,15 +1,16 @@
 <?php
-Route::get('/deconnexion', 'ClientController@logout');
 
-Route::post('/mot-de-passe-oublie', 'ClientForgotPassword@test')->name('password.email');
+Route::get('/deconnexion', 'Client\ClientController@logout');
+
+Route::post('/forgot-password', 'Client\ForgotPasswordController@sendResetLink')->name('password.email');
 
 Route::get('{page}', 'PageController@catchall')->where([
     'page' => '\b(changer-votre-mot-de-passe)\b'
 ])->name("password.reset")->middleware('client');
 
-Route::get('changer-votre-mot-de-passe', 'ClientChangePassword@view')->name("password.reset")->middleware('client');
+Route::get('/changer-votre-mot-de-passe', 'Client\ResetPasswordController@view')->name("password.reset")->middleware('client');
 
-Route::post('/reset-password', 'ClientForgotPassword@reset')->name('password.update');
+Route::post('/reset-password', 'Client\ResetPasswordController@resetPassword')->name('password.update');
 
 //add specific name to be simple to add active class
 //add middleware to secure this specific page