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 back()->withInput($request->except("password"))->withErrors("Email ou mot de passe incorrect."); } } catch (Exception $e) { return back()->withInput($request->except("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 back()->withInput($request->except("password"))->withErrors("Votre compte existe mais votre email n'est pas confirmé, 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 back()->withInput($request->except("password"))->withErrors('Les identifiants entrés sont incorrects.'); } } else { return back()->withInput($request->except("password"))->withErrors('Les identifiants entrés sont incorrects.'); } } public function logout() { Auth::logout(); return redirect()->route('home'); } public function confirmEmail($verifyToken) { $result = false; $user = User::where('email_verify_token', $verifyToken)->first(); if (!$user) return view('front.basic.confirm-email', compact('result')); try { $cpcConnect = new CPCConnection(config('crm.CRM_PLATOS_WSDL'), config('crm.WS_SERVCE_LOGIN'), config('crm.WS_SERVCE_PASSWORD')); $cpcConnect->connect(); try { $cpcConnect->activateUser($user->crm_id); $user->email_verified = 1; $user->email_verify_token = NULL; $user->save(); $result = true; } catch (Exception $e) { return view('front.basic.confirm-email', compact('result')); } } catch (Exception $e) { return view('front.basic.confirm-email', compact('result')); } return view('front.basic.confirm-email', compact('result')); } public function forgotPassword(Request $request) { if ($request->tokenValid && $request->token) { $tokenValid = $request->tokenValid; $token = $request->token; return view('front.basic.forgot-password', compact('tokenValid', 'token')); } return view('front.basic.forgot-password'); } public function forgotPasswordReset(Request $request, $token) { if (!$request->hasValidSignature(false)) return redirect()->route('login')->withErrors("Le lien de changement de votre mot de passe n'est plus valide, veuillez réessayer."); $tokenValid = false; $user = User::where('password_token', $token)->first(); if (!$user) return redirect()->route('forgot-password', compact('tokenValid'))->withErrors('Le lien de changement du mot de passe est incorrect.'); $tokenValid = true; return redirect()->route('forgot-password', compact('tokenValid', 'token')); } 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(); $settings = Settings::find(1); Mail::to($email)->send(new PasswordReset($user, $settings)); return redirect()->route('login')->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).'); } else { return back()->withInput($request->only('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 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.'); } }