From b087a7130c32b5599ac13e8d04d55cca7a6f46cf Mon Sep 17 00:00:00 2001 From: ilhooq Date: Mon, 9 Sep 2024 20:27:54 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20l'exp=C3=A9rience=20ut?= =?UTF-8?q?ilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/app.php | 12 ++- lib/AuthMiddleware.php | 13 +++- modules/site/Module.php | 18 ----- modules/site/layouts/minimal.php | 2 +- .../user/controllers/DefaultController.php | 17 ++++- modules/user/messages/fr.php | 2 +- modules/user/models/User.php | 9 ++- modules/user/views/default/reminder.php | 12 +-- modules/user/views/default/reset.php | 76 ++++++++++--------- .../user/controllers/DefaultController.php | 14 ++++ overrides/user/views/default/login.php | 47 ++++++++++++ overrides/user/views/default/reminder.php | 48 ++++++++++++ vite/src/styles/site.scss | 24 +++--- 13 files changed, 207 insertions(+), 87 deletions(-) create mode 100644 overrides/user/controllers/DefaultController.php create mode 100644 overrides/user/views/default/login.php create mode 100644 overrides/user/views/default/reminder.php diff --git a/config/app.php b/config/app.php index 07090f5..76f6844 100644 --- a/config/app.php +++ b/config/app.php @@ -44,13 +44,23 @@ return [ 'user' => '@app/modules/user/messages' ] ], + 'Nette\Mail\SmtpMailer' => [ + 'construct' => [ + getenv('SMTP_HOST'), + getenv('SMTP_USER'), + getenv('SMTP_PASSWORD'), + (int) getenv('SMTP_PORT'), + getenv('SMTP_ENCRYPTION'), + ] + ], ], 'modules' => [ 'site' => 'app\modules\site\Module', 'user' => [ 'class' => 'app\modules\user\Module', 'controllerMap' => [ - 'admin' => 'app\overrides\user\controllers\AdminController' + 'admin' => 'app\overrides\user\controllers\AdminController', + 'default' => 'app\overrides\user\controllers\DefaultController', ] ], ], diff --git a/lib/AuthMiddleware.php b/lib/AuthMiddleware.php index 953d319..afc01d0 100644 --- a/lib/AuthMiddleware.php +++ b/lib/AuthMiddleware.php @@ -35,11 +35,20 @@ final class AuthMiddleware implements MiddlewareInterface $router = $this->application->getComponent('Piko\Router'); assert($router instanceof \Piko\Router); + $loginUrl = $router->getUrl('user/default/login'); - $params = $request->getServerParams(); + $allowedUrls = [ + $loginUrl, + $router->getUrl('user/default/reminder'), + $router->getUrl('user/default/reset-password'), + $router->getUrl('user/default/check-registration'), + ]; - if ($user->isGuest() && $params['REQUEST_URI'] != $loginUrl) { + $params = $request->getServerParams(); + $path = rtrim(parse_url($params['REQUEST_URI'], PHP_URL_PATH), '/'); + + if ($user->isGuest() && !in_array($path, $allowedUrls)) { $response= new Response(); diff --git a/modules/site/Module.php b/modules/site/Module.php index f5b4928..3fc2797 100644 --- a/modules/site/Module.php +++ b/modules/site/Module.php @@ -19,25 +19,7 @@ class Module extends \Piko\Module $view = $this->application->getComponent('Piko\View'); $view->params['user'] = $user; $view->params['language'] = $this->application->language; - // $view->attachBehavior('vite', 'app\lib\Vite::vite'); $vite = new Vite($view); $vite->loadEntry('main.js'); - - $userModule = $this->application->getModule('user'); - assert ($userModule instanceof \app\modules\user\Module); - - $userModule->on(CreateControllerEvent::class, function(CreateControllerEvent $event) { - $event->controller->on(BeforeActionEvent::class, function (BeforeActionEvent $event) { - - $action = $event->actionId; - - switch($action) { - case 'login': - $event->controller->layout = 'minimal'; - break; - } - - }); - }); } } diff --git a/modules/site/layouts/minimal.php b/modules/site/layouts/minimal.php index 3d7f107..11812f8 100644 --- a/modules/site/layouts/minimal.php +++ b/modules/site/layouts/minimal.php @@ -2,7 +2,7 @@ /* @var $this \Piko\View */ /* @var $content string */ -if (!$this->title) $this->title = 'Openai'; +if (!$this->title) $this->title = 'IA Assistant'; ?> diff --git a/modules/user/controllers/DefaultController.php b/modules/user/controllers/DefaultController.php index 61f5393..3e53fc1 100644 --- a/modules/user/controllers/DefaultController.php +++ b/modules/user/controllers/DefaultController.php @@ -52,9 +52,12 @@ class DefaultController extends \Piko\Controller if (!empty($post)) { - $user = new User($this->db); + $module = $this->module; + assert ($module instanceof \app\modules\user\Module); + $user = new User($this->db); $user->scenario = User::SCENARIO_REGISTER; + $user->passwordMinLength = $module->passwordMinLength; $user->bind($post); @@ -89,8 +92,12 @@ class DefaultController extends \Piko\Controller if (!empty($post)) { + $module = $this->module; + assert ($module instanceof \app\modules\user\Module); + $user = new User($this->db); $user->scenario = 'register'; + $user->passwordMinLength = $module->passwordMinLength; $user->bind($post); $user->isValid(); $errors = $user->getErrors(); @@ -156,13 +163,17 @@ class DefaultController extends \Piko\Controller } if ($user) { - // $user->sendResetPassword(); + $app = $this->module->getApplication(); + $router = $app->getComponent('Piko\Router'); + $mailer = $app->getComponent('Nette\Mail\SmtpMailer'); + $user->sendResetPassword($router, $mailer); $message['type'] = 'success'; $message['content'] = __( 'user', 'A link has been sent to you by email ({email}). It will allow you to recreate your password.', ['email' => $user->email] ); + $reminder = ''; } else { $message['type'] = 'danger'; $message['content'] = __('user', 'Account not found.'); @@ -186,7 +197,7 @@ class DefaultController extends \Piko\Controller $user = User::findByAuthKey($token); if (!$user) { - throw new HttpException('Not found', 404); + throw new HttpException('User not found', 404); } $message = false; diff --git a/modules/user/messages/fr.php b/modules/user/messages/fr.php index d4eeabe..e5a74a4 100644 --- a/modules/user/messages/fr.php +++ b/modules/user/messages/fr.php @@ -19,7 +19,7 @@ Une demande de changement de mot passe a été effectuée pour votre compte sur Votre identifiant est : {username}. -Pour changer votre mot de passe , cliquez sur le lien ci-dessous. +Pour changer votre mot de passe , cliquez sur ou copiez-collez dans votre navigateur le lien ci-dessous. {link} diff --git a/modules/user/models/User.php b/modules/user/models/User.php index 33c3a04..e73c9e6 100644 --- a/modules/user/models/User.php +++ b/modules/user/models/User.php @@ -43,7 +43,8 @@ class User extends \Piko\DbRecord implements \Piko\User\IdentityInterface const SCENARIO_RESET = 'reset'; public static \PDO $pdo; - public static Module $module; + + public int $passwordMinLength = 8; /** * The table name @@ -267,11 +268,11 @@ class User extends \Piko\DbRecord implements \Piko\User\IdentityInterface $this->errors['password'] = __('user', 'Password must be filled in.'); } elseif (($this->scenario == self::SCENARIO_REGISTER || $this->scenario == self::SCENARIO_RESET) && - strlen($this->password) < static::$module->passwordMinLength) { + strlen($this->password) < $this->passwordMinLength) { $this->errors['password'] = __( 'user', 'Password is to short. Minimum {num}: characters.', - ['num' => static::$module->passwordMinLength] + ['num' => (string) $this->passwordMinLength] ); } @@ -367,7 +368,7 @@ class User extends \Piko\DbRecord implements \Piko\User\IdentityInterface $subject = __('user', 'Password change request on {site_name}', ['site_name' => $siteName]); $mail = new Message(); - $mail->setFrom($siteName . ' <' . getenv('NO_REPLY_EMAIL') . '>') + $mail->setFrom(getenv('NO_REPLY_EMAIL'), $siteName) ->addTo($this->email) ->setSubject($subject) ->setBody($message); diff --git a/modules/user/views/default/reminder.php b/modules/user/views/default/reminder.php index 1897f49..4493049 100644 --- a/modules/user/views/default/reminder.php +++ b/modules/user/views/default/reminder.php @@ -1,10 +1,12 @@ title = Piko::t('user', 'Forget password'); +$this->title = __('user', 'Forget password'); if (is_array($message)) { $this->params['message'] = $message; @@ -18,10 +20,10 @@ if (is_array($message)) {
- +
- +
diff --git a/modules/user/views/default/reset.php b/modules/user/views/default/reset.php index dfabdfa..6130c45 100644 --- a/modules/user/views/default/reset.php +++ b/modules/user/views/default/reset.php @@ -1,74 +1,76 @@ title = Piko::t('user', 'Change your account ({account}) password',['account' => $user->username]); - -if (is_array($message)) { - $this->params['message'] = $message; - - echo '
' - . Piko::t('user', 'Login') . '
'; - - return; -} +$this->title = __('user', 'Change your account ({account}) password',['account' => $user->username]); $js = <<