diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php
index 9edfdee..182a4b2 100644
--- a/app/Http/Controllers/LoginController.php
+++ b/app/Http/Controllers/LoginController.php
@@ -41,32 +41,63 @@ class LoginController extends Controller
$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');
+ $cpcConnect->authenticateUser($email, $password);
} 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.');
+ return back()->withInput($request->except( "password"))->withErrors("Votre compte existe mais votre email n'est pas confirmé, merci de vérifier vos emails.");
}
} else {
- return back()->withInput($request->except("password"))->withErrors('Les identifiants entrés sont incorrects.');
+ 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
+ $oCrmUser = $cpcConnect->authenticateUser($email, $password);
+
+ $userLocal = User::create([
+ 'crm_id' => $oCrmUser->iId,
+ 'civility' => $oCrmUser->zCivilite,
+ 'firstname' => $oCrmUser->zPrenom,
+ 'lastname' => $oCrmUser->zNom,
+ 'birth_date' => $oCrmUser->zDateNaissance,
+ 'email' => $oCrmUser->zEmail,
+ 'password' => Hash::make("MOTDEPASSE"),
+ 'address' => $oCrmUser->zAdresse1,
+ 'address2' => $oCrmUser->zAdresse2,
+ 'town' => $oCrmUser->zVille,
+ 'postal_code' => $oCrmUser->zCodePostal,
+ 'country' => "France",
+ 'email_verify_token' => Str::uuid(),
+ 'email_verified' => 1
+ ]);
+
+ } 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.");
+ }
+ }
+
+ $tmpPwd = "MOTDEPASSE";
+ if ($userLocal->role === 1)
+ $tmpPwd = $password;
+
+ if (Auth::attempt(["email" => $email, "password" => $tmpPwd], $remember)) {
+ if ($userLocal->role === 1)
+ return redirect()->route('bo.dashboard');
+ return redirect()->route('saisir-code');
+ } else {
+ return back()->withInput($request->except('password'))->withErrors('Les identifiants entrés sont incorrects.');
}
@@ -144,10 +175,22 @@ class LoginController extends Controller
$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.');
+
+ // TODO : Ajouter controle du contenu du mot de passe
$newPassword = $request->password;
- $user->password = Hash::make($newPassword);
- $user->password_token = null;
- $user->save();
+
+ try {
+ $cpcConnect = new CPCConnection(config('crm.CRM_PLATOS_WSDL'), config('crm.WS_SERVCE_LOGIN'), config('crm.WS_SERVCE_PASSWORD'));
+ $cpcConnect->connect();
+ try {
+ $cpcConnect->changePassword($user->crm_id, $newPassword);
+ } catch (Exception $e) {
+ return back()->withErrors("Une erreur est survenue, veuillez réessayer plus tard.");
+ }
+ } catch (Exception $e) {
+ return back()->withErrors("Une erreur est survenue, veuillez réessayer plus tard.");
+ }
+
return redirect()->route('login')->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.');
}
}
diff --git a/app/Http/Controllers/RegisterController.php b/app/Http/Controllers/RegisterController.php
index e561991..10c9564 100644
--- a/app/Http/Controllers/RegisterController.php
+++ b/app/Http/Controllers/RegisterController.php
@@ -2,7 +2,6 @@
namespace App\Http\Controllers;
-use App\Http\Controllers\Controller;
use App\Mail\VerifyEmail;
use App\Providers\RouteServiceProvider;
use App\User;
@@ -12,7 +11,6 @@ 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;
@@ -21,6 +19,7 @@ class RegisterController extends Controller
{
use RegistersUsers;
+ // TODO : Utilité ??
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
@@ -34,6 +33,20 @@ class RegisterController extends Controller
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);
@@ -47,19 +60,29 @@ class RegisterController extends Controller
$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()->subYears(18)->toDateString(),
- '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',
- ]);
+
+ $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;
@@ -80,8 +103,7 @@ class RegisterController extends Controller
$oCrmUser->addField ("pays", FIELDTYPE_TEXT, "", ucfirst($country));
$oCrmUser->zLogin = $email;
$oCrmUser->zEmail = $email;
- // En attendant la mise à jour de la crm, on envoi un mot de passe bidon
- $oCrmUser->zPassword = "MOTDEPASSE";
+ $oCrmUser->zPassword = $password;
if($news == 1) $oCrmUser->iInscritNewLetter = $news ;
$oCrmUser->iId = $cpcConnect->createUser($oCrmUser, 1);
$crmId = $oCrmUser->iId;
@@ -104,7 +126,7 @@ class RegisterController extends Controller
'lastname' => $lastname,
'birth_date' => $birthDate,
'email' => $email,
- 'password' => Hash::make($password),
+ 'password' => Hash::make("MOTDEPASSE"),
'address' => $address,
'address2' => $address2,
'town' => $town,
@@ -117,9 +139,21 @@ class RegisterController extends Controller
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.");
+ "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;
}
}
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
index f5f7a9b..c9c0af8 100644
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -16,13 +16,13 @@ class CreateUsersTable extends Migration
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->integer('crm_id')->nullable();
- $table->integer('civility');
+ $table->integer('civility')->nullable();
$table->string('firstname');
$table->string('lastname');
$table->date('birth_date');
$table->string('email')->unique();
$table->string('password');
- $table->string('address');
+ $table->string('address')->nullable();
$table->string('address2')->nullable();
$table->string('town');
$table->string('postal_code');
diff --git a/database/migrations/2020_10_12_123129_create_settings.php b/database/migrations/2020_10_12_123129_create_settings.php
index 5909341..0dd1bfc 100644
--- a/database/migrations/2020_10_12_123129_create_settings.php
+++ b/database/migrations/2020_10_12_123129_create_settings.php
@@ -37,7 +37,7 @@ class CreateSettings extends Migration
$table->text('notification_emails')->nullable();
$table->boolean('winning_proof');
$table->string('company');
- $table->text('analytics');
+ $table->text('analytics')->nullable();
$table->timestamps();
$table->collation = 'utf8mb4_unicode_ci';
});
diff --git a/resources/views/front/basic_example/register-crm.blade.php b/resources/views/front/basic_example/register-crm.blade.php
index 8d6d485..171d4ca 100644
--- a/resources/views/front/basic_example/register-crm.blade.php
+++ b/resources/views/front/basic_example/register-crm.blade.php
@@ -38,7 +38,7 @@