middleware('guest'); $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token')); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'phone' => 'max:50', 'adress' => 'required|string|max:255', 'postal_code' => 'required|string|max:50', 'town' => 'required|string|max:255', 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'ok_cgv' => 'accepted', ]); } /** * Create a new user instance after a valid registration. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse */ public function create(Request $request) { $data = $request->all(); $this->validator($data)->validate(); $lastname = filter_var($data['lastname'], FILTER_SANITIZE_STRING); $firstname = filter_var($data['firstname'], FILTER_SANITIZE_STRING); //$birthdate = $request->birth_date; $phone = filter_var($data['phone'], FILTER_SANITIZE_STRING); $email = filter_var($data['email'], FILTER_SANITIZE_EMAIL); $address = filter_var($data['adress'], FILTER_SANITIZE_STRING); //$address2 = $request->address2 !== null ? filter_var($request->address2, FILTER_SANITIZE_STRING) : null; $postal_code = filter_var($data['postal_code'], FILTER_SANITIZE_STRING); $town = filter_var($data['town'], FILTER_SANITIZE_STRING); //$country = filter_var($request->country, FILTER_SANITIZE_STRING); $password = $data['password']; //$optin = $request->news !== null ? 1 : 0; $optin = 0; $user_cat = $data['user_cat']; $social_denomination = filter_var($data['social_denomination'], FILTER_SANITIZE_STRING); $tech_commercial = filter_var($data['tech_commercial'], FILTER_SANITIZE_STRING); $eleveur_volailles = isset($data['eleveur_volailles']) ? true : false; $eleveur_porcs = isset($data['eleveur_porcs']) ? true : false; $eleveur_bovins = isset($data['eleveur_bovins']) ? true : false; $capacite_stockage = filter_var($data['capacite_stockage'], FILTER_SANITIZE_STRING); $temps_chargement = filter_var($data['temps_chargement'], FILTER_SANITIZE_STRING); $stockage_aplat = isset($data['stockage_aplat']) ? true : false; $stockage_cellule = isset($data['stockage_cellule']) ? true : false; $adress_chargement = filter_var($data['adress_chargement'], FILTER_SANITIZE_STRING); $optional_contact = filter_var($data['optional_contact'], FILTER_SANITIZE_STRING); $ok_cgv = \Carbon\Carbon::now(); //$tokenMail = Str::uuid(); if($user_cat == "professionnel") { $role = 3; } else { $role = 4; } $userData = [ 'lastname' => $lastname, 'firstname' => $firstname, 'phone' => $phone, 'email' => $email, 'adress' => $address, 'postal_code' => $postal_code, 'town' => $town, 'password' => Hash::make($password), 'role' => $role, ]; if ($role == 3) { $proData = [ 'social_denomination' => $social_denomination, 'tech_commercial' => $tech_commercial, 'eleveur_volailles' => $eleveur_volailles, 'eleveur_porcs' => $eleveur_porcs, 'eleveur_bovins' => $eleveur_bovins, 'capacite_stockage' => $capacite_stockage, 'temps_chargement' => $temps_chargement, 'stockage_aplat' => $stockage_aplat, 'stockage_cellule' => $stockage_cellule, 'adress_chargement' => $adress_chargement, 'optional_contact' => $optional_contact, 'ok_cgv' => $ok_cgv, ]; $userData = array_merge($userData, $proData); } //création dans la CRM $crmUser = $this->apiCrm->createCustomer($email, $password, $firstname, $lastname, $optin, null, null, $address, null, $town, $postal_code, null); //création OK if ($crmUser->status === 'OK') { //envoi du mail de vérification $user = User::create($userData); 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." . $crmUser->code); } } } }