diff --git a/composer.lock b/composer.lock index c71c70e..87505ee 100644 --- a/composer.lock +++ b/composer.lock @@ -58,21 +58,21 @@ }, { "name": "flus/minz", - "version": "2.0.3", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/flusio/Minz.git", - "reference": "1d50585fe791be492b71b8695272b7bff78abad0" + "reference": "9eef26f1d545479c05ca838a41406e95a99b4d52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/flusio/Minz/zipball/1d50585fe791be492b71b8695272b7bff78abad0", - "reference": "1d50585fe791be492b71b8695272b7bff78abad0", + "url": "https://api.github.com/repos/flusio/Minz/zipball/9eef26f1d545479c05ca838a41406e95a99b4d52", + "reference": "9eef26f1d545479c05ca838a41406e95a99b4d52", "shasum": "" }, "require": { "php": ">=8.2", - "phpmailer/phpmailer": "^6.9", + "phpmailer/phpmailer": "^7.0", "twig/twig": "^3.21" }, "require-dev": { @@ -98,22 +98,22 @@ "homepage": "https://github.com/flusio/Minz", "support": { "issues": "https://github.com/flusio/Minz/issues", - "source": "https://github.com/flusio/Minz/tree/2.0.3" + "source": "https://github.com/flusio/Minz/tree/2.3.0" }, - "time": "2025-10-15T14:12:12+00:00" + "time": "2025-11-25T17:03:44+00:00" }, { "name": "phpmailer/phpmailer", - "version": "v6.11.1", + "version": "v7.0.1", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "d9e3b36b47f04b497a0164c5a20f92acb4593284" + "reference": "360ae911ce62e25e11249f6140fa58939f556ebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/d9e3b36b47f04b497a0164c5a20f92acb4593284", - "reference": "d9e3b36b47f04b497a0164c5a20f92acb4593284", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/360ae911ce62e25e11249f6140fa58939f556ebe", + "reference": "360ae911ce62e25e11249f6140fa58939f556ebe", "shasum": "" }, "require": { @@ -127,13 +127,13 @@ "doctrine/annotations": "^1.2.6 || ^1.13.3", "php-parallel-lint/php-console-highlighter": "^1.0.0", "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.2", + "phpcompatibility/php-compatibility": "^10.0.0@dev", + "squizlabs/php_codesniffer": "^3.13.5", "yoast/phpunit-polyfills": "^1.0.4" }, "suggest": { "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", + "directorytree/imapengine": "For uploading sent messages via IMAP, see gmail example", "ext-imap": "Needed to support advanced email address parsing according to RFC822", "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "ext-openssl": "Needed for secure SMTP sending and DKIM signing", @@ -174,7 +174,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.11.1" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v7.0.1" }, "funding": [ { @@ -182,7 +182,7 @@ "type": "github" } ], - "time": "2025-09-30T11:54:53+00:00" + "time": "2025-11-25T07:18:09+00:00" }, { "name": "symfony/deprecation-contracts", @@ -421,16 +421,16 @@ }, { "name": "twig/twig", - "version": "v3.21.1", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", + "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", "shasum": "" }, "require": { @@ -484,7 +484,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.22.1" }, "funding": [ { @@ -496,17 +496,17 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2025-11-16T16:01:12+00:00" } ], "packages-dev": [ { "name": "phpstan/phpstan", - "version": "2.1.31", + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96", - "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -551,25 +551,25 @@ "type": "github" } ], - "time": "2025-10-10T14:14:11+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "rector/rector", - "version": "2.2.3", + "version": "2.2.14", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f" + "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d27f976a332a87b5d03553c2e6f04adbe5da034f", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/6d56bb0e94d4df4f57a78610550ac76ab403657d", + "reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.26" + "phpstan/phpstan": "^2.1.33" }, "conflict": { "rector/rector-doctrine": "*", @@ -603,7 +603,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.3" + "source": "https://github.com/rectorphp/rector/tree/2.2.14" }, "funding": [ { @@ -611,20 +611,20 @@ "type": "github" } ], - "time": "2025-10-11T21:50:23+00:00" + "time": "2025-12-09T10:57:55+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "4.0.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "06113cfdaf117fc2165f9cd040bd0f17fcd5242d" + "reference": "0525c73950de35ded110cffafb9892946d7771b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/06113cfdaf117fc2165f9cd040bd0f17fcd5242d", - "reference": "06113cfdaf117fc2165f9cd040bd0f17fcd5242d", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5", + "reference": "0525c73950de35ded110cffafb9892946d7771b5", "shasum": "" }, "require": { @@ -690,7 +690,7 @@ "type": "thanks_dev" } ], - "time": "2025-09-15T11:28:58+00:00" + "time": "2025-11-10T16:43:36+00:00" } ], "aliases": [], diff --git a/src/Application.php b/src/Application.php index 44406e6..40a6425 100644 --- a/src/Application.php +++ b/src/Application.php @@ -101,9 +101,9 @@ private function initApp(Request $request): void 'controller_namespace' => '\\taust\\controllers', ]); - if (!utils\CurrentUser::currentId()) { + if (!auth\CurrentUser::currentId()) { $user_id = $request->cookies->getString('taust_session', ''); - utils\CurrentUser::set($user_id); + auth\CurrentUser::set($user_id); } $available_locales = utils\Locale::availableLocales(); @@ -123,7 +123,7 @@ private function initApp(Request $request): void 'environment' => \Minz\Configuration::$environment, 'errors' => [], 'error' => null, - 'current_user' => utils\CurrentUser::get(), + 'current_user' => auth\CurrentUser::get(), 'current_locale' => $locale, 'navigation_active' => null, 'is_app_page' => $page !== null, diff --git a/src/Router.php b/src/Router.php index 54a3f17..244123a 100644 --- a/src/Router.php +++ b/src/Router.php @@ -18,9 +18,9 @@ public static function load(): \Minz\Router $router->addRoute('GET', '/', 'Dashboard#index', 'home'); $router->addRoute('POST', '/', 'Metrics#create', 'create metrics'); - $router->addRoute('GET', '/login', 'Auth#login', 'login'); - $router->addRoute('POST', '/login', 'Auth#createSession', 'create session'); - $router->addRoute('POST', '/logout', 'Auth#deleteSession', 'logout'); + $router->addRoute('GET', '/login', 'Authentications#login', 'login'); + $router->addRoute('POST', '/login', 'Authentications#createSession', 'create session'); + $router->addRoute('POST', '/logout', 'Authentications#deleteSession', 'logout'); $router->addRoute('GET', '/profile', 'Users#show', 'user'); $router->addRoute('POST', '/profile', 'Users#update', 'update user'); diff --git a/src/utils/CurrentUser.php b/src/auth/CurrentUser.php similarity index 83% rename from src/utils/CurrentUser.php rename to src/auth/CurrentUser.php index 335c427..b154a8e 100644 --- a/src/utils/CurrentUser.php +++ b/src/auth/CurrentUser.php @@ -1,6 +1,6 @@ diff --git a/src/controllers/Alarms.php b/src/controllers/Alarms.php index c99e41d..b80d54d 100644 --- a/src/controllers/Alarms.php +++ b/src/controllers/Alarms.php @@ -4,9 +4,9 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -22,7 +22,7 @@ class Alarms extends BaseController */ public function index(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('alarms/index.phtml', [ 'ongoing_alarms' => models\Alarm::listOngoingOrderByDescCreatedAt(), @@ -44,10 +44,9 @@ public function index(Request $request): Response */ public function finish(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $alarm = models\Alarm::require($id); + $alarm = models\Alarm::requireFromRequest($request); $from = $request->parameters->getString('from', ''); $form = new forms\BaseForm(); diff --git a/src/controllers/Announcements.php b/src/controllers/Announcements.php index b135977..65c68aa 100644 --- a/src/controllers/Announcements.php +++ b/src/controllers/Announcements.php @@ -4,9 +4,9 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; class Announcements extends BaseController { @@ -20,8 +20,7 @@ class Announcements extends BaseController */ public function show(Request $request): Response { - $id = $request->parameters->getString('id', ''); - $announcement = models\Announcement::require($id); + $announcement = models\Announcement::requireFromRequest($request); return Response::ok('announcements/show.phtml', [ 'announcement' => $announcement, @@ -40,10 +39,9 @@ public function show(Request $request): Response */ public function edit(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $announcement = models\Announcement::require($id); + $announcement = models\Announcement::requireFromRequest($request); return Response::ok('announcements/edit.phtml', [ 'announcement' => $announcement, @@ -71,10 +69,9 @@ public function edit(Request $request): Response */ public function update(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $announcement = models\Announcement::require($id); + $announcement = models\Announcement::requireFromRequest($request); $form = new forms\Announcement(model: $announcement); $form->handleRequest($request); @@ -108,10 +105,9 @@ public function update(Request $request): Response */ public function updateStatus(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $announcement = models\Announcement::require($id); + $announcement = models\Announcement::requireFromRequest($request); $form = new forms\AnnouncementStatus(model: $announcement); $form->handleRequest($request); @@ -139,10 +135,9 @@ public function updateStatus(Request $request): Response */ public function delete(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $announcement = models\Announcement::require($id); + $announcement = models\Announcement::requireFromRequest($request); $page_id = $announcement->page_id; diff --git a/src/controllers/Auth.php b/src/controllers/Authentications.php similarity index 88% rename from src/controllers/Auth.php rename to src/controllers/Authentications.php index 23bb3ce..40838a1 100644 --- a/src/controllers/Auth.php +++ b/src/controllers/Authentications.php @@ -4,11 +4,11 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; -class Auth extends BaseController +class Authentications extends BaseController { /** * @response 302 / @@ -18,7 +18,7 @@ class Auth extends BaseController */ public function login(): Response { - if (utils\CurrentUser::get()) { + if (auth\CurrentUser::get()) { return Response::redirect('home'); } @@ -39,7 +39,7 @@ public function login(): Response */ public function createSession(Request $request): Response { - if (utils\CurrentUser::get()) { + if (auth\CurrentUser::get()) { return Response::redirect('home'); } @@ -54,7 +54,7 @@ public function createSession(Request $request): Response $user = $form->user(); - utils\CurrentUser::set($user->id); + auth\CurrentUser::set($user->id); $response = Response::redirect('home'); $response->setCookie('taust_session', $user->id, [ @@ -73,7 +73,7 @@ public function createSession(Request $request): Response */ public function deleteSession(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); $form = new forms\BaseForm(); $form->handleRequest($request); @@ -82,7 +82,7 @@ public function deleteSession(Request $request): Response return \Minz\Response::redirect('home'); } - utils\CurrentUser::reset(); + auth\CurrentUser::reset(); $response = Response::redirect('login'); $response->removeCookie('taust_session'); diff --git a/src/controllers/BaseController.php b/src/controllers/BaseController.php index 41b347d..180758a 100644 --- a/src/controllers/BaseController.php +++ b/src/controllers/BaseController.php @@ -5,9 +5,7 @@ use Minz\Controller; use Minz\Request; use Minz\Response; -use taust\models; -use taust\errors; -use taust\utils; +use taust\auth; /** * @author Marien Fressinaud @@ -15,26 +13,19 @@ */ class BaseController { - public function requireCurrentUser(): models\User - { - $current_user = utils\CurrentUser::get(); - - if (!$current_user) { - throw new errors\MissingCurrentUserError(); - } - - return $current_user; - } - - #[Controller\ErrorHandler(errors\MissingCurrentUserError::class)] + #[Controller\ErrorHandler(auth\MissingCurrentUserError::class)] public function redirectOnMissingCurrentUser(Request $request): Response { return Response::redirect('login'); } - #[Controller\ErrorHandler(errors\MissingResourceError::class)] - public function failOnMissingRessource(Request $request): Response - { - return Response::notFound('not_found.phtml'); + #[Controller\ErrorHandler(\Minz\Errors\MissingRecordError::class)] + public function failOnMissingRessource( + Request $request, + \Minz\Errors\MissingRecordError $error, + ): Response { + return Response::notFound('not_found.phtml', [ + 'error' => $error, + ]); } } diff --git a/src/controllers/Dashboard.php b/src/controllers/Dashboard.php index b7ed152..a09ade5 100644 --- a/src/controllers/Dashboard.php +++ b/src/controllers/Dashboard.php @@ -3,8 +3,8 @@ namespace taust\controllers; use Minz\Response; +use taust\auth; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -20,7 +20,7 @@ class Dashboard extends BaseController */ public function index(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); $domains = models\Domain::listAll(); $number_domains = count($domains); diff --git a/src/controllers/Domains.php b/src/controllers/Domains.php index e28af04..367eb78 100644 --- a/src/controllers/Domains.php +++ b/src/controllers/Domains.php @@ -4,9 +4,9 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -22,7 +22,7 @@ class Domains extends BaseController */ public function index(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('domains/index.phtml', [ 'domains' => models\Domain::listAllOrderById(), @@ -37,7 +37,7 @@ public function index(): Response */ public function new(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('domains/new.phtml', [ 'form' => new forms\Domain(), @@ -58,7 +58,7 @@ public function new(): Response */ public function create(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); $domain = new models\Domain(); $form = new forms\Domain(model: $domain); @@ -90,10 +90,9 @@ public function create(Request $request): Response */ public function show(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $domain = models\Domain::require($id); + $domain = models\Domain::requireFromRequest($request); $alarms = models\Alarm::listByDomainIdOrderByDescCreatedAt($domain->id); $last_heartbeat = models\Heartbeat::findLastHeartbeatByDomainId($domain->id); @@ -121,10 +120,9 @@ public function show(Request $request): Response */ public function delete(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $domain = models\Domain::require($id); + $domain = models\Domain::requireFromRequest($request); $form = new forms\BaseForm(); $form->handleRequest($request); diff --git a/src/controllers/Pages.php b/src/controllers/Pages.php index 5772a29..151c70c 100644 --- a/src/controllers/Pages.php +++ b/src/controllers/Pages.php @@ -4,9 +4,9 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -22,7 +22,7 @@ class Pages extends BaseController */ public function index(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('pages/index.phtml', [ 'pages' => models\Page::listAllOrderByTitle(), @@ -37,7 +37,7 @@ public function index(): Response */ public function new(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('pages/new.phtml', [ 'form' => new forms\NewPage(), @@ -57,7 +57,7 @@ public function new(): Response */ public function create(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); $page = new models\Page(); @@ -86,8 +86,7 @@ public function create(Request $request): Response */ public function show(Request $request): Response { - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); $announcement = new models\Announcement($page); return Response::ok('pages/show.phtml', [ @@ -106,8 +105,7 @@ public function show(Request $request): Response */ public function feed(Request $request): Response { - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); return Response::ok('pages/feed.atom.xml.phtml', [ 'page' => $page, @@ -125,8 +123,7 @@ public function feed(Request $request): Response */ public function style(Request $request): Response { - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); $response = Response::text(200, $page->style); $response->setHeader('Content-Type', 'text/css'); @@ -145,10 +142,9 @@ public function style(Request $request): Response */ public function edit(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); return Response::ok('pages/edit.phtml', [ 'page' => $page, @@ -176,10 +172,9 @@ public function edit(Request $request): Response */ public function update(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); $form = new forms\Page(model: $page); $form->handleRequest($request); @@ -215,10 +210,9 @@ public function update(Request $request): Response */ public function delete(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); $form = new forms\BaseForm(); $form->handleRequest($request); diff --git a/src/controllers/Servers.php b/src/controllers/Servers.php index 07da27c..00c7af5 100644 --- a/src/controllers/Servers.php +++ b/src/controllers/Servers.php @@ -4,9 +4,9 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -22,7 +22,7 @@ class Servers extends BaseController */ public function index(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('servers/index.phtml', [ 'servers' => models\Server::listAllOrderById(), @@ -37,7 +37,7 @@ public function index(): Response */ public function new(): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); return Response::ok('servers/new.phtml', [ 'form' => new forms\Server(), @@ -57,7 +57,7 @@ public function new(): Response */ public function create(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); $server = new models\Server(); $form = new forms\Server(model: $server); @@ -89,10 +89,9 @@ public function create(Request $request): Response */ public function show(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $server = models\Server::require($id); + $server = models\Server::requireFromRequest($request); $alarms = models\Alarm::listByServerIdOrderByDescCreatedAt($server->id); $metric = models\Metric::findLastByServerId($server->id); @@ -119,10 +118,9 @@ public function show(Request $request): Response */ public function delete(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $server = models\Server::require($id); + $server = models\Server::requireFromRequest($request); $form = new forms\BaseForm(); $form->handleRequest($request); diff --git a/src/controllers/Users.php b/src/controllers/Users.php index 12c6efc..02f2d6f 100644 --- a/src/controllers/Users.php +++ b/src/controllers/Users.php @@ -4,9 +4,8 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\forms; -use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -22,7 +21,7 @@ class Users extends BaseController */ public function show(Request $request): Response { - $current_user = $this->requireCurrentUser(); + $current_user = auth\CurrentUser::require(); return Response::ok('users/show.phtml', [ 'form' => new forms\User(model: $current_user), @@ -44,7 +43,7 @@ public function show(Request $request): Response */ public function update(Request $request): Response { - $current_user = $this->requireCurrentUser(); + $current_user = auth\CurrentUser::require(); $form = new forms\User(model: $current_user); $form->handleRequest($request); diff --git a/src/controllers/pages/Announcements.php b/src/controllers/pages/Announcements.php index ebd136d..96b49bc 100644 --- a/src/controllers/pages/Announcements.php +++ b/src/controllers/pages/Announcements.php @@ -4,10 +4,10 @@ use Minz\Request; use Minz\Response; +use taust\auth; use taust\controllers\BaseController; use taust\forms; use taust\models; -use taust\utils; /** * @author Marien Fressinaud @@ -25,8 +25,7 @@ class Announcements extends BaseController */ public function index(Request $request): Response { - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); return Response::ok('pages/announcements/index.phtml', [ 'page' => $page, @@ -53,10 +52,9 @@ public function index(Request $request): Response */ public function create(Request $request): Response { - $this->requireCurrentUser(); + auth\CurrentUser::require(); - $id = $request->parameters->getString('id', ''); - $page = models\Page::require($id); + $page = models\Page::requireFromRequest($request); $announcement = new models\Announcement($page); $form = new forms\Announcement(model: $announcement); diff --git a/src/errors/MissingResourceError.php b/src/errors/MissingResourceError.php deleted file mode 100644 index 5b82ced..0000000 --- a/src/errors/MissingResourceError.php +++ /dev/null @@ -1,11 +0,0 @@ - - * @license http://www.gnu.org/licenses/agpl-3.0.en.html AGPL - */ -class MissingResourceError extends \RuntimeException -{ -} diff --git a/src/models/Alarm.php b/src/models/Alarm.php index dcfb0e3..f4ffb53 100644 --- a/src/models/Alarm.php +++ b/src/models/Alarm.php @@ -12,7 +12,7 @@ class Alarm { use Database\Recordable; - use Requirable; + use Database\Resource; #[Database\Column] public int $id; diff --git a/src/models/Announcement.php b/src/models/Announcement.php index 2eefd8b..6207792 100644 --- a/src/models/Announcement.php +++ b/src/models/Announcement.php @@ -14,7 +14,7 @@ class Announcement { use Database\Recordable; - use Requirable; + use Database\Resource; use Validable; #[Database\Column] diff --git a/src/models/Domain.php b/src/models/Domain.php index 4d76b9d..f55b085 100644 --- a/src/models/Domain.php +++ b/src/models/Domain.php @@ -14,7 +14,7 @@ class Domain { use Database\Recordable; - use Requirable; + use Database\Resource; use Validable; #[Database\Column] diff --git a/src/models/Page.php b/src/models/Page.php index fdbb7a8..4608b33 100644 --- a/src/models/Page.php +++ b/src/models/Page.php @@ -14,7 +14,7 @@ class Page { use Database\Recordable; - use Requirable; + use Database\Resource; use Validable; public const TITLE_MAX_LENGTH = 100; diff --git a/src/models/Requirable.php b/src/models/Requirable.php deleted file mode 100644 index 17e0a14..0000000 --- a/src/models/Requirable.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @license http://www.gnu.org/licenses/agpl-3.0.en.html AGPL - */ -trait Requirable -{ - public static function require(string $pk_value): self - { - $model = self::find($pk_value); - - if ($model === null) { - throw new errors\MissingResourceError(); - } - - return $model; - } -} diff --git a/src/models/Server.php b/src/models/Server.php index 44f4725..70624ad 100644 --- a/src/models/Server.php +++ b/src/models/Server.php @@ -14,7 +14,7 @@ class Server { use Database\Recordable; - use Requirable; + use Database\Resource; use Validable; #[Database\Column]