diff --git a/src/Aperophp/Provider/Controller/Member.php b/src/Aperophp/Provider/Controller/Member.php index a660e7b..cc7dee7 100644 --- a/src/Aperophp/Provider/Controller/Member.php +++ b/src/Aperophp/Provider/Controller/Member.php @@ -97,6 +97,11 @@ public function connect(Application $app) if ($form->isValid()) { $data = $form->getData(); + $username = $data['member']['username']; + if ($app['members']->findOneByUsername($username)) { + $app->abort(500, sprintf("Le nom d'utilisateur '%s' est déjà utilisé.", $username)); + } + $app['db']->beginTransaction(); try { diff --git a/src/Aperophp/Repository/Member.php b/src/Aperophp/Repository/Member.php index e65fbc6..3c21e72 100644 --- a/src/Aperophp/Repository/Member.php +++ b/src/Aperophp/Repository/Member.php @@ -23,4 +23,19 @@ public function findOneByUsernameAndPassword($username, $password) return $this->db->fetchAssoc($sql, array($username, $password)); } + + /** + * findOneByUsername + * + * @param string $username + * + * @return array + */ + public function findOneByUsername($username) + { + $sql = 'SELECT * FROM Member WHERE username = ? AND active = true LIMIT 1'; + + return $this->db->fetchAssoc($sql, array($username)); + } + }