123 lines
4.8 KiB
PHP
123 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Providers\RouteServiceProvider;
|
|
use App\User;
|
|
use Carbon\Carbon;
|
|
use CPCConnection;
|
|
use CPCUser;
|
|
use Exception;
|
|
use Illuminate\Foundation\Auth\RegistersUsers;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class RegisterController extends Controller
|
|
{
|
|
use RegistersUsers;
|
|
|
|
protected $redirectTo = RouteServiceProvider::HOME;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware('guest');
|
|
}
|
|
|
|
public function index() {
|
|
return view('front.basic.register-crm');
|
|
}
|
|
|
|
public function register(Request $request) {
|
|
|
|
$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);
|
|
$username = filter_var($request->username, FILTER_SANITIZE_STRING);
|
|
$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();
|
|
$request->validate([
|
|
'lastname' => 'required|string|max:255',
|
|
'firstname' => 'required|string|max:255',
|
|
'birth_date' => 'required|date|before_or_equal:' . Carbon::now()->subYear(18)->toDateString(),
|
|
'email' => 'required|string|email|max:255|unique:users',
|
|
'username' => 'required|string|min:3|max:255',
|
|
'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',
|
|
]);
|
|
|
|
$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->zVille = $town ;
|
|
$oCrmUser->zCodePostal = $postalCode ;
|
|
$oCrmUser->addField ("pays", FIELDTYPE_TEXT, "", $country);
|
|
$oCrmUser->zLogin = $email ;
|
|
$oCrmUser->zEmail = $email;
|
|
$oCrmUser->zPassword = $password;
|
|
if($news == 1) $oCrmUser->iInscritNewLetter = $news ;
|
|
$oCrmUser->iId = $cpcConnect->createUser($oCrmUser, 0);
|
|
$crmId = $oCrmUser->iId;
|
|
// TODO : Envoi de mail pour confirmation
|
|
|
|
} catch (Exception $e) {
|
|
return redirect()->back()
|
|
->withInput($request->only("lastname","firstname","birth_date","email","username", "address", "address2", "town", "postal_code", "country"))
|
|
->withErrors("Un compte utilisateur est déjà associé à votre email. Modifiez votre email ou connectez vous avec ce compte.");
|
|
}
|
|
} catch (Exception $e) {
|
|
return redirect()->back()
|
|
->withInput($request->only("lastname","firstname","birth_date","email","username", "address", "address2", "town", "postal_code", "country"))
|
|
->withErrors("Une erreur est survenue, merci de recommencer.");
|
|
}
|
|
|
|
User::create([
|
|
'crm_id' => $crmId,
|
|
'civility' => $civility,
|
|
'firstname' => $firstname,
|
|
'lastname' => $lastname,
|
|
'birth_date' => $birthDate,
|
|
'email' => $email,
|
|
'username' => $username,
|
|
'password' => Hash::make($password),
|
|
'address' => $address,
|
|
'address2' => $address2,
|
|
'town' => $town,
|
|
'postal_code' => $postalCode,
|
|
'country' => $country,
|
|
'email_verify_token' => $tokenMail,
|
|
]);
|
|
|
|
$credentials = $request->only('email', 'password');
|
|
|
|
if (Auth::attempt($credentials)) {
|
|
return redirect()->route('home');
|
|
}
|
|
|
|
return redirect()->route('home');
|
|
}
|
|
}
|