diff --git a/app/controller/campaign.php b/app/controller/campaign.php index 87508aa6e3fd70abfa1e3c09b603c59b27b51a76..8e924e3dc2013cd8997918f294672b218fbced3d 100644 --- a/app/controller/campaign.php +++ b/app/controller/campaign.php @@ -4,6 +4,7 @@ namespace Controller; use LQDN\Command\UserUpdateTotalCommand; use LQDN\Command\UserCreateCommand; use LQDN\Command\DonationCreateCommand; +use LQDN\Exception\InvalidEmailException; class Campaign extends Controller { @@ -108,7 +109,7 @@ class Campaign extends Controller $user = $f3->get('container')['user_finder']->findByEmail(\Utils::asl($email)); - if (count($user) > 0 && is_array($user)) { + if (is_array($user) && count($user) > 0) { // We have an existing user, we should try to login with the provided password // or 403. $mapper = new \DB\SQL\Mapper($f3->get('DB'), 'users'); @@ -122,8 +123,13 @@ class Campaign extends Controller $cumul_id = $user['cumul']; } else { // The user does not exist, so let's create it - $result = $db->query("INSERT INTO users (pseudo, email, hash) - VALUES ('".$f3->get('pseudo')."', '$email', '$hash')"); + try { + $f3->get('container')['command_handler']->handle(new UserCreateCommand($email, $hash, $f3->get('pseudo'), 0, 0)); + } catch (InvalidEmailException $e) { + $f3->set("error", _("Email Invalide")); + $f3->error("403"); + } + $user_id = $db->lastInsertId(); } } diff --git a/db/migrations/20181025132655_add_commentaire.php b/db/migrations/20181025132655_add_commentaire.php index 399f15309903dac8bafee6e5a448bdb09e61005f..32adc0ca776544302cd058e77d66f9daae1a69a0 100644 --- a/db/migrations/20181025132655_add_commentaire.php +++ b/db/migrations/20181025132655_add_commentaire.php @@ -28,7 +28,7 @@ class AddCommentaire extends AbstractMigration public function change() { $table = $this->table('contreparties'); - $table->addColumn('commentaire', 'string') + $table->addColumn('commentaire', 'string', array('default' => '')) ->update(); } } diff --git a/db/migrations/20191003105908_code_postaux_alphanumeriques.php b/db/migrations/20191003105908_code_postaux_alphanumeriques.php new file mode 100644 index 0000000000000000000000000000000000000000..8016422062f98b091fa775939ef38531491013c1 --- /dev/null +++ b/db/migrations/20191003105908_code_postaux_alphanumeriques.php @@ -0,0 +1,40 @@ +<?php + + +use Phinx\Migration\AbstractMigration; + +class CodePostauxAlphanumeriques extends AbstractMigration +{ + /** + * Change Method. + * + * Write your reversible migrations using this method. + * + * More information on writing migrations is available here: + * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class + * + * The following commands can be used in this method and Phinx will + * automatically reverse them when rolling back: + * + * createTable + * renameTable + * addColumn + * addCustomColumn + * renameColumn + * addIndex + * addForeignKey + * + * Any other destructive changes will result in an error when trying to + * rollback the migration. + * + * Remember to call "create()" or "update()" and NOT "save()" when working + * with the Table class. + */ + public function change() + { + $adresses = $this->table('adresses'); + $adresses->changeColumn('codepostal', 'string', ['limit' => 20]) + ->update(); + + } +} diff --git a/db/schema.sql b/db/schema.sql index 7b042a2d1964462b41c84380ae33324ab306e528..6ee4aa723990864045b38168d1e26e3e68719ded 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -83,7 +83,7 @@ DROP TABLE IF EXISTS `contreparties`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `contreparties` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `datec` datetime NOT NULL, + `datec` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `user_id` int(10) unsigned NOT NULL, `quoi` varchar(255) NOT NULL, `taille` int(10) unsigned NOT NULL, @@ -105,22 +105,22 @@ DROP TABLE IF EXISTS `dons`; CREATE TABLE `dons` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `status` tinyint(3) unsigned NOT NULL, - `datec` datetime NOT NULL, + `datec` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `somme` int(10) unsigned NOT NULL, `lang` varchar(5) CHARACTER SET latin1 NOT NULL DEFAULT 'en_US', - `cadeau` tinyint(3) unsigned NOT NULL, - `abo` tinyint(4) NOT NULL, - `taille` int(10) unsigned NOT NULL, - `public` int(10) unsigned NOT NULL, - `pdf` varchar(32) CHARACTER SET latin1 NOT NULL, - `decimale` int(10) unsigned NOT NULL, - `datee` datetime NOT NULL, + `cadeau` tinyint(3) unsigned NOT NULL DEFAULT 0, + `abo` tinyint(4) NOT NULL DEFAULT 0, + `taille` int(10) unsigned NOT NULL DEFAULT 0, + `public` int(10) unsigned NOT NULL DEFAULT 0, + `pdf` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT '', + `decimale` int(10) unsigned NOT NULL DEFAULT 0, + `datee` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `mailsent` tinyint(4) DEFAULT '0', `color` varchar(7) CHARACTER SET latin1 DEFAULT NULL, - `pi_x` int(11) DEFAULT NULL, - `pi_y` int(11) DEFAULT NULL, - `hash` varchar(64) DEFAULT NULL, - `taille_h` int(10) unsigned NOT NULL, + `pi_x` int(11) DEFAULT NULL DEFAULT 0, + `pi_y` int(11) DEFAULT NULL DEFAULT 0, + `hash` varchar(64) DEFAULT NULL DEFAULT "", + `taille_h` int(10) unsigned NOT NULL DEFAULT 0, `fdnn_user` bigint(20) NOT NULL DEFAULT '0', `color_2` varchar(7) DEFAULT '', `cumul` int(11) DEFAULT '0', @@ -193,13 +193,13 @@ CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(255) DEFAULT NULL, `hash` varchar(64) CHARACTER SET latin1 NOT NULL, - `total` int(10) unsigned NOT NULL, - `cumul` int(10) unsigned NOT NULL, - `pseudo` varchar(255) NOT NULL, + `total` int(10) unsigned NOT NULL DEFAULT 0, + `cumul` int(10) unsigned NOT NULL DEFAULT 0, + `pseudo` varchar(255) NOT NULL DEFAULT "", `identifier` varchar(50) DEFAULT NULL, `expiration` datetime DEFAULT NULL, `status` int(11) DEFAULT NULL, - `commentaire` text, + `commentaire` text DEFAULT '', PRIMARY KEY (`id`), KEY `email` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=15494 DEFAULT CHARSET=utf8 COMMENT='Les donateurs'; diff --git a/src/LQDN/Exception/InvalidEmailException.php b/src/LQDN/Exception/InvalidEmailException.php new file mode 100644 index 0000000000000000000000000000000000000000..d24191ac929591dadf35051d4d206d55eae41120 --- /dev/null +++ b/src/LQDN/Exception/InvalidEmailException.php @@ -0,0 +1,7 @@ +<?php + +namespace LQDN\Exception; + +class InvalidEmailException extends \RuntimeException +{ +} diff --git a/src/LQDN/Handler/UserHandler.php b/src/LQDN/Handler/UserHandler.php index 0ae0a0de1422efdba87c394d231bdce807862a3e..8dd237b75cebbbf93b09b1b00d243c6a2a917271 100644 --- a/src/LQDN/Handler/UserHandler.php +++ b/src/LQDN/Handler/UserHandler.php @@ -8,6 +8,14 @@ use LQDN\Command\UserUpdateTotalCommand; use LQDN\Command\UserUpdateCumulCommand; use LQDN\Command\UserCreateCommand; use LQDN\Command\AdminUpdateTotalUsersCommand; +use LQDN\Exception\InvalidEmailException; + +function checkEmail($email) +{ + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new InvalidEmailException(); + } +} class UserHandler { @@ -25,6 +33,7 @@ class UserHandler */ public function handleUserUpdateByAdminCommand(UserUpdateByAdminCommand $command) { + checkEmail($command->getEmail()); $this->connection->executeUpdate('UPDATE users SET pseudo = :username, email = :email, commentaire = :comment, cumul = :cumul, total = :total WHERE id = :id', [ 'username' => $command->getUsername(), 'email' => $command->getEmail(), @@ -42,6 +51,7 @@ class UserHandler */ public function handleUserCreateCommand(UserCreateCommand $command) { + checkEmail($command->getEmail()); $this->connection->executeUpdate('INSERT INTO users(email, hash, pseudo, total, cumul) VALUES (:email, :hash, :pseudo, :total, :cumul)', [ 'email'=> $command->getEmail(), 'hash'=> $command->getHash(),