middleware('guest'); } public function index() { return view('front.basic.register-crm'); } public function register(Request $request) { $request->validate([ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'birth_date' => 'required|string|max:10', 'email' => 'required|string|email|max:255|unique:users|confirmed', 'password' => 'required|string|min:8|confirmed', 'address' => 'required|string|max:255', 'address2' => 'max:255', 'town' => 'required|string|max:255', 'postal_code' => 'required|string|max:255', 'country' => 'required|string|max:255', 'reglement' => 'accepted', ]); $civility = $request->civility; $lastname = filter_var($request->lastname, FILTER_SANITIZE_STRING); $firstname = filter_var($request->firstname, FILTER_SANITIZE_STRING); $birthDate = $request->birth_date; $email = filter_var($request->email, FILTER_SANITIZE_EMAIL); $password = $request->password; $address = filter_var($request->address, FILTER_SANITIZE_STRING); $address2 = $request->address2 !== null ? filter_var($request->address2, FILTER_SANITIZE_STRING) : null; $town = filter_var($request->town, FILTER_SANITIZE_STRING); $postalCode = filter_var($request->postal_code, FILTER_SANITIZE_STRING); $country = filter_var($request->country, FILTER_SANITIZE_STRING); $news = $request->news !== null ? 1 : 0; $tokenMail = Str::uuid(); $MJ = Carbon::now()->subYears(18); if ($this->isSQLDate($birthDate)){ $d = Carbon::createFromFormat('Y-m-d', $birthDate); if (!$d->lessThanOrEqualTo($MJ)) return back() ->withInput($request->except('password')) ->withErrors("Vous devez être majeur pour vous inscrire au jeu."); }elseif ($this->isFormDate($birthDate)){ $d = Carbon::createFromFormat('d/m/Y', $birthDate); if (!$d->lessThanOrEqualTo($MJ)) return back() ->withInput($request->except('password')) ->withErrors("Vous devez être majeur pour vous inscrire au jeu."); $birthDate = $d->toDateString(); }else{ return back() ->withInput($request->except('password')) ->withErrors("Erreur sur le champs : date de naissance."); } $crmId = null; try { $cpcConnect = new CPCConnection(config('crm.CRM_PLATOS_WSDL'), config('crm.WS_SERVCE_LOGIN'), config('crm.WS_SERVCE_PASSWORD')); $cpcConnect->connect(); try { $oCrmUser = new CPCUser(); $oCrmUser->zCivilite = $civility; $oCrmUser->zNom = $lastname ; $oCrmUser->zPrenom = $firstname ; $oCrmUser->zDateNaissance = $birthDate; $oCrmUser->zAdresse1 = $address; $oCrmUser->zAdresse2 = $address2; $oCrmUser->zVille = $town ; $oCrmUser->zCodePostal = $postalCode ; $oCrmUser->addField ("pays", FIELDTYPE_TEXT, "", ucfirst($country)); $oCrmUser->zLogin = $email; $oCrmUser->zEmail = $email; $oCrmUser->zPassword = $password; if($news == 1) $oCrmUser->iInscritNewLetter = $news ; $oCrmUser->iId = $cpcConnect->createUser($oCrmUser, 1); $crmId = $oCrmUser->iId; } catch (Exception $e) { return back() ->withInput($request->except('password')) ->withErrors("Un compte utilisateur est déjà associé à votre email. Modifiez votre email ou connectez vous avec ce compte. " . $e->getMessage()); } } catch (Exception $e) { return back() ->withInput($request->except('password')) ->withErrors("Une erreur est survenue, merci de recommencer."); } $user = User::create([ 'crm_id' => $crmId, 'civility' => $civility, 'firstname' => $firstname, 'lastname' => $lastname, 'birth_date' => $birthDate, 'email' => $email, 'password' => Hash::make("MOTDEPASSE"), 'address' => $address, 'address2' => $address2, 'town' => $town, 'postal_code' => $postalCode, 'country' => ucfirst($country), 'email_verify_token' => $tokenMail, ]); Mail::to($email)->send(new VerifyEmail($user)); return redirect()->route('login') ->with('success', "Pour finaliser votre inscription, merci de cliquer sur le lien qui vient de vous être envoyé par email
" . "Informations complémentaires :
" . "- Vérifiez vos spams : l'email de confirmation s'y trouve peut-être
" . "- Attention : le mail peut parfois mettre quelques minutes à vous parvenir
" . "- L'activation de votre compte doit se faire dans les 24 heures qui suivent la demande de création."); } private function isSQLDate($date){ if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $date)) return true; return false; } private function isFormDate($date){ if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/", $date)) return true; return false; } }