middleware('guest')->except('logout'); } public function index() { return view('front.basic.login'); } public function authenticate(Request $request) { $email = $request->email; $password = $request->password; $remember = $request->remember !== null ? true : false; $userLocal = User::where('email', $email)->first(); if ($userLocal) { if ($userLocal->email_verified === 1) { if ($userLocal->role !== 1) { try { $cpcConnect = new CPCConnection(config('crm.CRM_PLATOS_WSDL'), config('crm.WS_SERVCE_LOGIN'), config('crm.WS_SERVCE_PASSWORD')); $cpcConnect->connect(); try { // ---- Authentification du user // En attendant la mise à jour de la crm, on envoi un mot de passe bidon (le même qu'a l'inscription) $cpcConnect->authenticateUser ($email, 'MOTDEPASSE'); } catch (Exception $e) { return redirect()->back()->withInput($request->only("email", "password"))->withErrors("Email ou mot de passe incorrect."); } } catch (Exception $e) { return redirect()->back()->withInput($request->only("email", "password"))->withErrors("La connexion est impossible pour le moment, veuillez réessayer plus tard."); die(); } } } else { $userLocal->email_verify_token = Str::uuid(); $userLocal->save(); Mail::to($email)->send(new VerifyEmail($userLocal)); return redirect()->back()->withInput($request->only("email", "password"))->withErrors("Votre compte éxiste mais votre email n'est pas confirmer, merci de vérifier vos emails."); } if (Auth::attempt(["email" => $email, "password" => $password], $remember)) { if ($userLocal->role === 1) return redirect()->route('bo.dashboard'); return redirect()->route('home'); } else { return redirect()->back()->withInput($request->only('email', 'remember'))->withErrors('Les identifiants entrés sont incorrects.'); } } else { return redirect()->back()->withInput($request->only('email', 'remember'))->withErrors('Les identifiants entrés sont incorrects.'); } } public function logout() { Auth::logout(); return redirect()->route('home'); } public function confirmEmail($verifyToken) { $result = false; $resendButton = false; $user = User::where('email_verify_token', $verifyToken)->first(); if (!$user) return view('front.basic.confirm-email', compact('result')); $user->email_verified = 1; $user->save(); $result = true; return view('front.basic.confirm-email', compact('result')); } public function forgotPassword($token = null) { if ($token) { $tokenValid = false; $user = User::where('password_token', $token)->first(); if (!$user) return view('front.basic.forgot-password', compact('tokenValid'))->withErrors('Le lien de changement du mot de passe est incorrect.'); $tokenValid = true; return view('front.basic.forgot-password', compact('tokenValid', 'token')); } else { return view('front.basic.forgot-password'); } } public function mailPassword(Request $request) { $email = filter_var($request->email, FILTER_SANITIZE_STRING); $user = User::where('email', $email)->first(); if ($user) { $user->password_token = Str::uuid(); $user->save(); Mail::to($email)->send(new PasswordReset($user)); return redirect()->route('login')->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).'); } else { return redirect()->back()->withInput($email)->withErrors("Le mail que vous avez entré n'est pas enregistré dans nos services."); } } public function changePassword(Request $request) { $request->validate([ 'password' => 'required|min:8|confirmed', ]); $user = User::where('password_token', filter_var($request->token, FILTER_SANITIZE_STRING))->first(); if (!$user) return redirect()->back()->withErrors('Le lien de changement de votre mot de passe est incorrect, veuillez réessayer.'); $newPassword = $request->password; $user->password = Hash::make($newPassword); $user->password_token = null; $user->save(); return redirect()->route('login')->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.'); } }