middleware('guest'); $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token')); } 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', ]); $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); $postcode = filter_var($request->postal_code, FILTER_SANITIZE_STRING); $country = filter_var($request->country, FILTER_SANITIZE_STRING); $optin = $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."); }//end if $crmUser = $this->apiCrm->createCustomer($email, $password, $firstname, $lastname, $optin, $birthdate, null, $address, $address2, $town, $postcode, ucfirst($country)); if ($crmUser->status === 'OK') { $user = Customer::create([ 'crm_id' => $crmUser->user->crm_id, 'firstname' => $firstname, 'lastname' => $lastname, 'birth_date' => $birthdate, 'email' => $email, 'password' => Hash::make("MOTDEPASSE"), // TODO : ??? 'address' => $address, 'address2' => $address2, 'town' => $town, 'postal_code' => $postcode, '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."); } else { if ($crmUser->code === 103) { return back() ->withInput($request->except('password')) ->withErrors("Un compte utilisateur est déjà associé à votre email."); } else { return back() ->withInput($request->except('password')) ->withErrors("Une erreur est survenue, merci de recommencer."); } }//end if } 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; } }