From fd156cc64c3aa733e2e5cdbdc722c564bc3624a9 Mon Sep 17 00:00:00 2001 From: Arman <407448+armanist@users.noreply.github.com> Date: Fri, 24 Apr 2026 20:45:19 +0400 Subject: [PATCH 1/5] [#471] Refactor Middleware, Controller, and Hooks to Response-driven flow --- src/App/Adapters/WebAppAdapter.php | 3 +- src/Middleware/MiddlewareManager.php | 16 +++---- src/Middleware/QtMiddleware.php | 6 +-- .../src/Controllers/MainController.php.tpl | 4 +- .../src/Controllers/MainController.php.tpl | 4 +- .../src/Controllers/AccountController.php.tpl | 12 +++--- .../src/Controllers/AuthController.php.tpl | 42 +++++++++---------- .../src/Controllers/CommentController.php.tpl | 8 ++-- .../src/Controllers/PostController.php.tpl | 10 ++--- .../PostManagementController.php.tpl | 20 ++++----- .../DemoApi/src/Middlewares/Activate.php.tpl | 4 +- .../DemoApi/src/Middlewares/Auth.php.tpl | 4 +- .../DemoApi/src/Middlewares/Comment.php.tpl | 2 +- .../src/Middlewares/CommentOwner.php.tpl | 4 +- .../DemoApi/src/Middlewares/Editor.php.tpl | 4 +- .../DemoApi/src/Middlewares/Forget.php.tpl | 4 +- .../DemoApi/src/Middlewares/Password.php.tpl | 2 +- .../DemoApi/src/Middlewares/PostOwner.php.tpl | 4 +- .../DemoApi/src/Middlewares/Resend.php.tpl | 4 +- .../DemoApi/src/Middlewares/Reset.php.tpl | 4 +- .../DemoApi/src/Middlewares/Signout.php.tpl | 4 +- .../DemoApi/src/Middlewares/Signup.php.tpl | 4 +- .../DemoApi/src/Middlewares/Update.php.tpl | 2 +- .../DemoApi/src/Middlewares/Verify.php.tpl | 4 +- .../src/Controllers/AccountController.php.tpl | 8 ++-- .../src/Controllers/AuthController.php.tpl | 28 ++++++------- .../src/Controllers/BaseController.php.tpl | 2 +- .../src/Controllers/CommentController.php.tpl | 4 +- .../src/Controllers/PageController.php.tpl | 8 ++-- .../src/Controllers/PostController.php.tpl | 10 ++--- .../PostManagementController.php.tpl | 28 ++++++------- .../DemoWeb/src/Middlewares/Activate.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Auth.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Comment.php.tpl | 2 +- .../src/Middlewares/CommentOwner.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Editor.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Forget.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Guest.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Password.php.tpl | 2 +- .../DemoWeb/src/Middlewares/PostOwner.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Resend.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Reset.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Signup.php.tpl | 4 +- .../DemoWeb/src/Middlewares/Update.php.tpl | 2 +- .../DemoWeb/src/Middlewares/Verify.php.tpl | 4 +- .../Controllers/DashboardController.php.tpl | 4 +- .../Controllers/DatabaseController.php.tpl | 14 +++---- .../src/Controllers/EmailsController.php.tpl | 10 ++--- .../src/Controllers/LogsController.php.tpl | 8 ++-- .../Toolkit/src/Middlewares/BasicAuth.php.tpl | 4 +- .../src/Middlewares/CreateTable.php.tpl | 4 +- ...9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml | 10 +++++ ...umRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml | 10 +++++ ...qgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml | 10 +++++ 54 files changed, 207 insertions(+), 180 deletions(-) create mode 100644 tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml create mode 100644 tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml create mode 100644 tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml diff --git a/src/App/Adapters/WebAppAdapter.php b/src/App/Adapters/WebAppAdapter.php index 6a08a0b18..57528cf0c 100644 --- a/src/App/Adapters/WebAppAdapter.php +++ b/src/App/Adapters/WebAppAdapter.php @@ -82,7 +82,8 @@ public function start(): ?int $this->logDebugInfo(); - [$request, $response] = (new MiddlewareManager($matchedRoute))->applyMiddlewares(request(), response()); + $response = (new MiddlewareManager($matchedRoute))->applyMiddlewares(request(), response()); + $request = request(); if ($this->setupViewCache()->serveCachedView(request()->getUri() ?? '', $response)) { stop(); diff --git a/src/Middleware/MiddlewareManager.php b/src/Middleware/MiddlewareManager.php index a01d96376..bf6599857 100644 --- a/src/Middleware/MiddlewareManager.php +++ b/src/Middleware/MiddlewareManager.php @@ -50,23 +50,23 @@ public function __construct(MatchedRoute $matchedRoute) /** * Apply Middlewares - * @return array{0: Request, 1: Response} + * @return Response * @throws MiddlewareException|BaseException|ReflectionException */ - public function applyMiddlewares(Request $request, Response $response): array + public function applyMiddlewares(Request $request, Response $response): Response { - if (!current($this->middlewares)) { - return [$request, $response]; + $middleware = current($this->middlewares); + + if (!$middleware) { + return $response; } $currentMiddleware = $this->getMiddleware($request, $response); - [$request, $response] = $currentMiddleware->apply($request, $response, function ($request, $response): array { + return $currentMiddleware->apply($request, $response, function (Request $request, Response $response): Response { next($this->middlewares); - return [$request, $response]; + return $this->applyMiddlewares($request, $response); }); - - return $this->applyMiddlewares($request, $response); } /** diff --git a/src/Middleware/QtMiddleware.php b/src/Middleware/QtMiddleware.php index e199c6fd2..93e178f54 100644 --- a/src/Middleware/QtMiddleware.php +++ b/src/Middleware/QtMiddleware.php @@ -27,12 +27,8 @@ abstract class QtMiddleware { /** - * Apply - * * Applies the middleware - * - * @return mixed */ - abstract public function apply(Request $request, Response $response, Closure $next); + abstract public function apply(Request $request, Response $response, Closure $next): Response; } diff --git a/src/Module/Templates/DefaultApi/src/Controllers/MainController.php.tpl b/src/Module/Templates/DefaultApi/src/Controllers/MainController.php.tpl index d911852a2..f57608cbe 100644 --- a/src/Module/Templates/DefaultApi/src/Controllers/MainController.php.tpl +++ b/src/Module/Templates/DefaultApi/src/Controllers/MainController.php.tpl @@ -42,9 +42,9 @@ class MainController * Action - success response * @param Response $response */ - public function index(Response $response) + public function index(Response $response): Response { - $response->json([ + return $response->json([ 'status' => 'success', 'message' => '{{MODULE_NAME}} module.' ]); diff --git a/src/Module/Templates/DefaultWeb/src/Controllers/MainController.php.tpl b/src/Module/Templates/DefaultWeb/src/Controllers/MainController.php.tpl index a745f1f41..02936a4ec 100644 --- a/src/Module/Templates/DefaultWeb/src/Controllers/MainController.php.tpl +++ b/src/Module/Templates/DefaultWeb/src/Controllers/MainController.php.tpl @@ -47,12 +47,12 @@ class MainController * @param Response $response * @param ViewFactory $view */ - public function index(Response $response, ViewFactory $view) + public function index(Response $response, ViewFactory $view): Response { $view->setParams([ 'title' => config()->get('app.name'), ]); - $response->html($view->render('index')); + return $response->html($view->render('index')); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl index 4e01801e2..7646e6ca1 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl @@ -46,7 +46,7 @@ class AccountController extends BaseController * @param Request $request * @param Response $response */ - public function update(Request $request, Response $response) + public function update(Request $request, Response $response): Response { try { $firstname = $request->get('firstname'); @@ -59,11 +59,11 @@ class AccountController extends BaseController auth()->refreshUser(auth()->user()->uuid); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'message' => t('common.updated_successfully') ]); - } catch (AuthException $e) { + } catch (AuthException $e) { $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() @@ -76,7 +76,7 @@ class AccountController extends BaseController * @param Request $request * @param Response $response */ - public function updatePassword(Request $request, Response $response) + public function updatePassword(Request $request, Response $response): Response { try { $hasher = new Hasher(); @@ -87,11 +87,11 @@ class AccountController extends BaseController 'password' => $hasher->hash($newPassword) ]); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'message' => t('common.updated_successfully') ]); - } catch (AuthException $e) { + } catch (AuthException $e) { $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() diff --git a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl index aa1f7aacd..4c56c7b0e 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl @@ -33,14 +33,14 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function signin(Request $request, Response $response) + public function signin(Request $request, Response $response): Response { try { $code = auth()->signin($request->get('email'), $request->get('password')); if (filter_var(config()->get('auth.two_fa'), FILTER_VALIDATE_BOOLEAN)) { $response->set('code', $code); - } + } $response->json([ 'status' => self::STATUS_SUCCESS @@ -57,9 +57,9 @@ class AuthController extends BaseController * Action - me * @param Response $response */ - public function me(Response $response) + public function me(Response $response): Response { - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'data' => [ 'firstname' => auth()->user()->firstname, @@ -73,13 +73,13 @@ class AuthController extends BaseController * Action - sign out * @param Response $response */ - public function signout(Response $response) + public function signout(Response $response): Response { if (auth()->signout()) { - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS ]); - } else { + } else { $response->json([ 'status' => self::STATUS_ERROR, 'message' => t('validation.unauthorizedRequest') @@ -92,13 +92,13 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function signup(Request $request, Response $response) + public function signup(Request $request, Response $response): Response { $userDto = UserDTO::fromRequest($request, Role::EDITOR, uuid_ordered()); auth()->signup($userDto->toArray()); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'message' => t('common.successfully_signed_up') ]); @@ -109,11 +109,11 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function activate(Request $request, Response $response) + public function activate(Request $request, Response $response): Response { auth()->activate($request->get('activation_token')); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'message' => t('common.account_activated') ]); @@ -124,11 +124,11 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function forget(Request $request, Response $response) + public function forget(Request $request, Response $response): Response { auth()->forget($request->get('email')); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'message' => t('common.check_email') ]); @@ -139,11 +139,11 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function reset(Request $request, Response $response) + public function reset(Request $request, Response $response): Response { auth()->reset($request->get('reset_token'), $request->get('password')); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS ]); } @@ -153,15 +153,15 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function verify(Request $request, Response $response) + public function verify(Request $request, Response $response): Response { try { auth()->verifyOtp((int)$request->get('otp'), $request->get('code')); - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS ]); - } catch (AuthException $e) { + } catch (AuthException $e) { $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() @@ -173,14 +173,14 @@ class AuthController extends BaseController * Action - Resend OTP * @param Response $response */ - public function resend(Response $response) + public function resend(Response $response): Response { try { - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS, 'code' => auth()->resendOtp(route_param('code')) ]); - } catch (AuthException $e) { + } catch (AuthException $e) { $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() diff --git a/src/Module/Templates/DemoApi/src/Controllers/CommentController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/CommentController.php.tpl index d59430df9..f1d0b0307 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/CommentController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/CommentController.php.tpl @@ -43,13 +43,13 @@ class CommentController extends BaseController * @param string|null $lang * @param string $uuid */ - public function create(Request $request, Response $response, ?string $lang, string $uuid) + public function create(Request $request, Response $response, ?string $lang, string $uuid): Response { $commentDto = CommentDTO::fromRequest($request, $uuid, auth()->user()->uuid); $comment = $this->commentService->addComment($commentDto); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.created_successfully'), 'data' => $comment @@ -62,11 +62,11 @@ class CommentController extends BaseController * @param string|null $lang * @param string $uuid */ - public function delete(Response $response, ?string $lang, string $uuid) + public function delete(Response $response, ?string $lang, string $uuid): Response { $this->commentService->deleteComment($uuid); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.deleted_successfully'), ]); diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl index 4b7258059..78e4f9daf 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl @@ -55,7 +55,7 @@ class PostController extends BaseController * @param Request $request * @param Response $response */ - public function posts(Request $request, Response $response) + public function posts(Request $request, Response $response): Response { $perPage = $request->get('per_page', (string) self::POSTS_PER_PAGE); $currentPage = $request->get('page', (string) self::CURRENT_PAGE); @@ -63,7 +63,7 @@ class PostController extends BaseController $paginatedPosts = $this->postService->getPosts($perPage, $currentPage, $search); - $response->json([ + return $response->json([ 'status' => 'success', 'data' => $this->postService->transformData($paginatedPosts->data()->all()), 'pagination' => [ @@ -81,18 +81,18 @@ class PostController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function post(Response $response, ?string $lang, string $postUuid) + public function post(Response $response, ?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); if ($post->isEmpty()) { - $response->json([ + return $response->json([ 'status' => 'error', 'message' => t('common.post_not_found') ], StatusCode::NOT_FOUND); stop(); - } + } $postData = current($this->postService->transformData([$post])); diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl index 54f7116e2..5b8d92f5a 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl @@ -44,11 +44,11 @@ class PostManagementController extends BaseController * Action - get my posts * @param Response $response */ - public function myPosts(Response $response) + public function myPosts(Response $response): Response { $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); - $response->json([ + return $response->json([ 'status' => 'success', 'data' => $this->postService->transformData($myPosts->all()) ]); @@ -59,7 +59,7 @@ class PostManagementController extends BaseController * @param Request $request * @param Response $response */ - public function create(Request $request, Response $response) + public function create(Request $request, Response $response): Response { $imageName = ''; @@ -69,7 +69,7 @@ class PostManagementController extends BaseController auth()->user()->uuid, slugify($request->get('title')) ); - } + } $postDto = PostDTO::fromRequest($request, auth()->user()->uuid, $imageName); @@ -89,7 +89,7 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function amend(Request $request, Response $response, ?string $lang, string $postUuid) + public function amend(Request $request, Response $response, ?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); @@ -98,7 +98,7 @@ class PostManagementController extends BaseController if ($request->hasFile('image')) { if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $imageName = $this->postService->saveImage( $request->getFile('image'), @@ -124,13 +124,13 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function delete(Response $response, ?string $lang, string $postUuid) + public function delete(Response $response, ?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $this->postService->deletePost($postUuid); @@ -146,13 +146,13 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function deleteImage(Response $response, ?string $lang, string $postUuid) + public function deleteImage(Response $response, ?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $postDto = new PostDTO( $post->title, diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl index 943f9e18a..949b05c49 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl @@ -31,9 +31,9 @@ class Activate extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $token = (string)route_param('token'); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Auth.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Auth.php.tpl index e0e7ec93a..6507d3d6c 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Auth.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Auth.php.tpl @@ -30,9 +30,9 @@ class Auth extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (!auth()->check()) { $this->respondWithError( diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl index a59e3a58b..bbe2c0ff8 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl @@ -31,7 +31,7 @@ class Comment extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $this->validateRequest($request, $response); return $next($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl index 74042752b..a6b9fc1fe 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl @@ -31,9 +31,9 @@ class CommentOwner extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $uuid = (string)route_param('uuid'); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl index da41bbe88..365ca2c7e 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl @@ -46,9 +46,9 @@ class Editor extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (!in_array(auth()->user()->role, self::ROLES)) { $this->respondWithError( diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl index c64c9cbf6..9f4663a66 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl @@ -32,9 +32,9 @@ class Forget extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl index eb40ec0ef..a5b0b7879 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl @@ -33,7 +33,7 @@ class Password extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl index 4ccd417c6..caac206bb 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl @@ -31,9 +31,9 @@ class PostOwner extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $uuid = (string)route_param('uuid'); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl index 8a1928321..e39be440b 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl @@ -31,9 +31,9 @@ class Resend extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $code = (string) route_param('code'); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl index ca44813e3..c70afed9d 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl @@ -31,9 +31,9 @@ class Reset extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $token = (string) route_param('token'); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Signout.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Signout.php.tpl index 269f2cc82..5e1404492 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Signout.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Signout.php.tpl @@ -29,9 +29,9 @@ class Signout extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (!$request->hasHeader('refresh_token')) { $this->respondWithError( diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl index 3e9578d1b..780293796 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl @@ -32,9 +32,9 @@ class Signup extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl index 71dd6d648..5dbc20da6 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl @@ -32,7 +32,7 @@ class Update extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl index e83c77748..27b1c00a1 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl @@ -32,9 +32,9 @@ class Verify extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl index 930e9202f..fd30f9fb3 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl @@ -46,20 +46,20 @@ class AccountController extends BaseController * Action - show user info * @param Response $response */ - public function form(Response $response) + public function form(Response $response): Response { $this->view->setParams([ 'title' => t('common.account_settings') . ' | ' . config()->get('app.name'), ]); - $response->html($this->view->render('account/form')); + return $response->html($this->view->render('account/form')); } /** * Action - update user info * @param Request $request */ - public function update(Request $request) + public function update(Request $request): Response { $firstname = $request->get('firstname'); $lastname = $request->get('lastname'); @@ -78,7 +78,7 @@ class AccountController extends BaseController * Action - update password * @param Request $request */ - public function updatePassword(Request $request) + public function updatePassword(Request $request): Response { $hasher = new Hasher(); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl index 174c8c2eb..c9d580a42 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl @@ -62,7 +62,7 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function signin(Request $request, Response $response) + public function signin(Request $request, Response $response): Response { if ($request->isMethod('post')) { try { @@ -70,7 +70,7 @@ class AuthController extends BaseController if (filter_var(config()->get('auth.two_fa'), FILTER_VALIDATE_BOOLEAN)) { redirect(base_url(true) . '/' . current_lang() . '/verify/' . $code); - } else { + } else { redirect(base_url(true) . '/' . current_lang()); } } catch (AuthException $e) { @@ -89,7 +89,7 @@ class AuthController extends BaseController /** * Action - sign out */ - public function signout() + public function signout(): Response { auth()->signout(); redirect(base_url(true) . '/' . current_lang()); @@ -100,7 +100,7 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function signup(Request $request, Response $response) + public function signup(Request $request, Response $response): Response { if ($request->isMethod('post')) { $userDto = UserDTO::fromRequest($request, Role::EDITOR, uuid_ordered()); @@ -109,7 +109,7 @@ class AuthController extends BaseController session()->setFlash('success', t('common.check_email_signup')); redirect(base_url(true) . '/' . current_lang() . '/signup'); - } else { + } else { $this->view->setParams([ // 'captcha' => captcha(), 'title' => t('common.signup') . ' | ' . config()->get('app.name'), @@ -123,7 +123,7 @@ class AuthController extends BaseController * Action - activate * @param Request $request */ - public function activate(Request $request) + public function activate(Request $request): Response { auth()->activate($request->get('activation_token')); redirect(base_url(true) . '/' . current_lang() . '/signin'); @@ -134,13 +134,13 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function forget(Request $request, Response $response) + public function forget(Request $request, Response $response): Response { if ($request->isMethod('post')) { auth()->forget($request->get('email')); session()->setFlash('success', t('common.check_email')); redirect(base_url(true) . '/' . current_lang() . '/forget'); - } else { + } else { $this->view->setParams([ 'title' => t('common.forget_password') . ' | ' . config()->get('app.name'), ]); @@ -154,12 +154,12 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function reset(Request $request, Response $response) + public function reset(Request $request, Response $response): Response { if ($request->isMethod('post')) { auth()->reset($request->get('reset_token'), $request->get('password')); redirect(base_url(true) . '/' . current_lang() . '/signin'); - } else { + } else { $this->view->setParams([ 'title' => t('common.reset_password') . ' | ' . config()->get('app.name'), 'reset_token' => $request->get('reset_token') @@ -174,13 +174,13 @@ class AuthController extends BaseController * @param Request $request * @param Response $response */ - public function verify(Request $request, Response $response) + public function verify(Request $request, Response $response): Response { if ($request->isMethod('post')) { try { auth()->verifyOtp((int)$request->get('otp'), $request->get('code')); redirect(base_url(true) . '/' . current_lang()); - } catch (AuthException $e) { + } catch (AuthException $e) { session()->setFlash('error', $e->getMessage()); redirect(base_url(true) . '/' . current_lang() . '/verify/' . $request->get('code')); } @@ -197,12 +197,12 @@ class AuthController extends BaseController /** * Action - Resend OTP */ - public function resend() + public function resend(): Response { try { $otpToken = auth()->resendOtp(route_param('code')); redirect(base_url(true) . '/' . current_lang() . '/verify/' . $otpToken); - } catch (AuthException $e) { + } catch (AuthException $e) { redirect(base_url(true) . '/' . current_lang() . '/signin'); } } diff --git a/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl index dfcd198b1..47e97afed 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl @@ -46,6 +46,6 @@ abstract class BaseController ]); $this->view->setParam('langs', config()->get('lang.supported')); - } + } } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl index b038919ec..a75e4c224 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl @@ -49,7 +49,7 @@ class CommentController extends BaseController * @param string|null $lang * @param string $uuid */ - public function create(Request $request, ?string $lang, string $uuid) + public function create(Request $request, ?string $lang, string $uuid): Response { $commentDto = CommentDTO::fromRequest($request, $uuid, auth()->user()->uuid); @@ -64,7 +64,7 @@ class CommentController extends BaseController * @param string|null $lang * @param string $uuid */ - public function delete(?string $lang, string $uuid) + public function delete(?string $lang, string $uuid): Response { $this->commentService->deleteComment($uuid); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PageController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PageController.php.tpl index 7e4602a8d..0cc577580 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PageController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PageController.php.tpl @@ -33,20 +33,20 @@ class PageController extends BaseController * Action - display home page * @param Response $response */ - public function home(Response $response) + public function home(Response $response): Response { $this->view->setParams([ 'title' => config()->get('app.name'), ]); - $response->html($this->view->render('pages/index')); + return $response->html($this->view->render('pages/index')); } /** * Action - display about page * @param Response $response */ - public function about(Response $response) + public function about(Response $response): Response { $this->view->setParams([ 'title' => t('common.about') . ' | ' . config()->get('app.name'), @@ -54,6 +54,6 @@ class PageController extends BaseController $commands = service(CommandService::class)->getAllCommands(); - $response->html($this->view->render('pages/about', ['commands' => $commands])); + return $response->html($this->view->render('pages/about', ['commands' => $commands])); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl index a00b87883..d0ea0c659 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl @@ -60,7 +60,7 @@ class PostController extends BaseController * @param Request $request * @param Response $response */ - public function posts(Request $request, Response $response) + public function posts(Request $request, Response $response): Response { $perPage = $request->get('per_page', (string) self::POSTS_PER_PAGE); $currentPage = $request->get('page', (string) self::CURRENT_PAGE); @@ -75,7 +75,7 @@ class PostController extends BaseController 'referer' => nav_ref_encode(request()->getQuery()) ]); - $response->html($this->view->render('post/post')); + return $response->html($this->view->render('post/post')); } /** @@ -85,16 +85,16 @@ class PostController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function post(Request $request, Response $response, ?string $lang, string $postUuid) + public function post(Request $request, Response $response, ?string $lang, string $postUuid): Response { $ref = $request->get('ref', 'posts'); $post = $this->postService->getPost($postUuid); if ($post->isEmpty()) { - $response->html(partial('errors/404'), StatusCode::NOT_FOUND); + return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); stop(); - } + } $commentService = service(CommentService::class); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl index 3430b7af1..9e9eac49f 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl @@ -48,7 +48,7 @@ class PostManagementController extends BaseController * @param Request $request * @param Response $response */ - public function myPosts(Request $request, Response $response) + public function myPosts(Request $request, Response $response): Response { $myPosts = $this->postService->getMyPosts(auth()->user()->uuid); @@ -57,7 +57,7 @@ class PostManagementController extends BaseController 'posts' => $this->postService->transformData($myPosts->all()) ]); - $response->html($this->view->render('post/my-posts')); + return $response->html($this->view->render('post/my-posts')); } /** @@ -65,7 +65,7 @@ class PostManagementController extends BaseController * @param Request $request * @param Response $response */ - public function createFrom(Request $request, Response $response) + public function createFrom(Request $request, Response $response): Response { $ref = $request->get('ref', 'posts'); @@ -74,14 +74,14 @@ class PostManagementController extends BaseController 'referer' => $ref ]); - $response->html($this->view->render('post/form')); + return $response->html($this->view->render('post/form')); } /** * Action - create post * @param Request $request */ - public function create(Request $request) + public function create(Request $request): Response { $imageName = ''; @@ -91,7 +91,7 @@ class PostManagementController extends BaseController auth()->user()->uuid, slugify($request->get('title')) ); - } + } $postDto = PostDTO::fromRequest($request, auth()->user()->uuid, $imageName); @@ -107,7 +107,7 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function amendForm(Request $request, Response $response, ?string $lang, string $postUuid) + public function amendForm(Request $request, Response $response, ?string $lang, string $postUuid): Response { $ref = $request->get('ref', 'posts'); @@ -119,7 +119,7 @@ class PostManagementController extends BaseController 'referer' => nav_ref_decode($ref) ]); - $response->html($this->view->render('post/form')); + return $response->html($this->view->render('post/form')); } /** @@ -128,7 +128,7 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function amend(Request $request, ?string $lang, string $postUuid) + public function amend(Request $request, ?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); @@ -137,7 +137,7 @@ class PostManagementController extends BaseController if ($request->hasFile('image')) { if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $imageName = $this->postService->saveImage( $request->getFile('image'), @@ -158,13 +158,13 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function delete(?string $lang, string $postUuid) + public function delete(?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $this->postService->deletePost($postUuid); @@ -176,13 +176,13 @@ class PostManagementController extends BaseController * @param string|null $lang * @param string $postUuid */ - public function deleteImage(?string $lang, string $postUuid) + public function deleteImage(?string $lang, string $postUuid): Response { $post = $this->postService->getPost($postUuid); if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $postDto = new PostDTO( $post->title, diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl index ac6d463fc..a14e22edc 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl @@ -32,9 +32,9 @@ class Activate extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $token = (string)route_param('token'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Auth.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Auth.php.tpl index 47491fcf6..9e20255ed 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Auth.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Auth.php.tpl @@ -30,9 +30,9 @@ class Auth extends QtMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (!auth()->check()) { redirect(base_url(true) . '/' . current_lang() . '/signin'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl index 5138fb896..1376ab693 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl @@ -31,7 +31,7 @@ class Comment extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $this->validateRequest($request, $response); return $next($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl index 74042752b..a6b9fc1fe 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl @@ -31,9 +31,9 @@ class CommentOwner extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $uuid = (string)route_param('uuid'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl index 0e4894ad3..110da56ee 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl @@ -45,9 +45,9 @@ class Editor extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (!in_array(auth()->user()->role, self::ROLES)) { redirect(base_url(true) . '/' . current_lang()); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl index e1095cac3..b0033c4d7 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl @@ -32,9 +32,9 @@ class Forget extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl index 46dd3e03d..21471f924 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl @@ -30,9 +30,9 @@ class Guest extends QtMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if (auth()->check()) { redirect(get_referrer() ?? base_url(true) . '/' . current_lang()); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Password.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Password.php.tpl index 2694c4b27..3ec5b596f 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Password.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Password.php.tpl @@ -34,7 +34,7 @@ class Password extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl index 61e02a9f3..ac5cad5ae 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl @@ -33,9 +33,9 @@ class PostOwner extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $uuid = (string)route_param('uuid'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl index 976551399..d9ff59014 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl @@ -31,9 +31,9 @@ class Resend extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $code = (string) route_param('code'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl index c29e6e1db..2116cbcaa 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl @@ -32,9 +32,9 @@ class Reset extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $token = (string) route_param('token'); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl index bcdc18287..35442c68d 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl @@ -31,9 +31,9 @@ class Signup extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $captchaName = captcha()->getName(); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl index 8a0a11474..57dbca5c1 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl @@ -32,7 +32,7 @@ class Update extends BaseMiddleware * @param Response $response * @param Closure $next */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { $this->validateRequest($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl index dabb62713..65d9e5529 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl @@ -32,9 +32,9 @@ class Verify extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $code = (string) route_param('code'); diff --git a/src/Module/Templates/Toolkit/src/Controllers/DashboardController.php.tpl b/src/Module/Templates/Toolkit/src/Controllers/DashboardController.php.tpl index 0c9acba2a..0cbee3db9 100644 --- a/src/Module/Templates/Toolkit/src/Controllers/DashboardController.php.tpl +++ b/src/Module/Templates/Toolkit/src/Controllers/DashboardController.php.tpl @@ -47,12 +47,12 @@ class DashboardController extends BaseController * @param Request $request * @param Response $response */ - public function index(Request $request, Response $response) + public function index(Request $request, Response $response): Response { $this->view->setParams([ 'title' => 'Dashboard', ]); - $response->html($this->view->render('pages/dashboard/index')); + return $response->html($this->view->render('pages/dashboard/index')); } } diff --git a/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl b/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl index b882e78c1..c78b4c401 100644 --- a/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl +++ b/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl @@ -43,7 +43,7 @@ class DatabaseController extends BaseController /** * @param Response $response */ - public function list(Response $response) + public function list(Response $response): Response { $tables = $this->databaseService->getTables(); @@ -52,7 +52,7 @@ class DatabaseController extends BaseController 'tables' => $tables, ]); - $response->html($this->view->render('pages/database/index')); + return $response->html($this->view->render('pages/database/index')); } /** @@ -60,7 +60,7 @@ class DatabaseController extends BaseController * @param Response $response * @throws DatabaseException */ - public function single(Request $request, Response $response) + public function single(Request $request, Response $response): Response { $tableName = $request->get('table'); $perPage = $request->get('per_page', self::ITEMS_PER_PAGE); @@ -78,13 +78,13 @@ class DatabaseController extends BaseController 'pagination' => $tableData['pagination'], ]); - $response->html($this->view->render('pages/database/table')); + return $response->html($this->view->render('pages/database/table')); } /** * @param Request $request */ - public function create(Request $request) + public function create(Request $request): Response { $tableName = $request->get('table'); @@ -98,7 +98,7 @@ class DatabaseController extends BaseController /** * @param Request $request */ - public function update(Request $request) + public function update(Request $request): Response { $tableName = $request->get('table'); $id = $request->get('rowId'); @@ -112,7 +112,7 @@ class DatabaseController extends BaseController /** * @param Request $request */ - public function delete(Request $request) + public function delete(Request $request): Response { $tableName = $request->get('tableName'); $id = $request->get('id'); diff --git a/src/Module/Templates/Toolkit/src/Controllers/EmailsController.php.tpl b/src/Module/Templates/Toolkit/src/Controllers/EmailsController.php.tpl index 08867a261..3076e2d84 100644 --- a/src/Module/Templates/Toolkit/src/Controllers/EmailsController.php.tpl +++ b/src/Module/Templates/Toolkit/src/Controllers/EmailsController.php.tpl @@ -47,7 +47,7 @@ class EmailsController extends BaseController * @param Request $request * @param Response $response */ - public function list(Request $request, Response $response) + public function list(Request $request, Response $response): Response { $perPage = $request->get('per_page', self::ITEMS_PER_PAGE); $currentPage = $request->get('page', self::CURRENT_PAGE); @@ -60,24 +60,24 @@ class EmailsController extends BaseController 'pagination' => $data ]); - $response->html($this->view->render('pages/email/index')); + return $response->html($this->view->render('pages/email/index')); } /** * @param Response $response * @param string $emailId */ - public function single(Response $response, string $emailId) + public function single(Response $response, string $emailId): Response { $email = $this->emailService->getEmail($emailId); - $response->html(quoted_printable_decode($email->getParsedBody())); + return $response->html(quoted_printable_decode($email->getParsedBody())); } /** * @param string $emailId */ - public function delete(string $emailId) + public function delete(string $emailId): Response { $this->emailService->deleteEmail($emailId); diff --git a/src/Module/Templates/Toolkit/src/Controllers/LogsController.php.tpl b/src/Module/Templates/Toolkit/src/Controllers/LogsController.php.tpl index 44d00ac1b..8383bec71 100644 --- a/src/Module/Templates/Toolkit/src/Controllers/LogsController.php.tpl +++ b/src/Module/Templates/Toolkit/src/Controllers/LogsController.php.tpl @@ -46,7 +46,7 @@ class LogsController extends BaseController /** * @param Response $response */ - public function list(Response $response) + public function list(Response $response): Response { $filteredLogFiles = $this->logsService->getLogFiles(); @@ -55,14 +55,14 @@ class LogsController extends BaseController 'logFiles' => $filteredLogFiles, ]); - $response->html($this->view->render('pages/logs/index')); + return $response->html($this->view->render('pages/logs/index')); } /** * @param Request $request * @param Response $response */ - public function single(Request $request, Response $response) + public function single(Request $request, Response $response): Response { $logFile = $request->get('logFile'); $perPage = $request->get('per_page', self::ITEMS_PER_PAGE); @@ -78,6 +78,6 @@ class LogsController extends BaseController 'pagination' => $parsedLogs, ]); - $response->html($this->view->render('pages/logs/log')); + return $response->html($this->view->render('pages/logs/log')); } } diff --git a/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl b/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl index 35025b52d..4536e1218 100644 --- a/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl +++ b/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl @@ -30,9 +30,9 @@ class BasicAuth extends QtMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $userCredentials = $request->getBasicAuthCredentials(); diff --git a/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl b/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl index 08e113808..15b4ed661 100644 --- a/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl +++ b/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl @@ -31,9 +31,9 @@ class CreateTable extends BaseMiddleware * @param Request $request * @param Response $response * @param Closure $next - * @return mixed + * @return Response */ - public function apply(Request $request, Response $response, Closure $next) + public function apply(Request $request, Response $response, Closure $next): Response { $this->validateRequest($request, $response); diff --git a/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml b/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml new file mode 100644 index 000000000..b3f124985 --- /dev/null +++ b/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml @@ -0,0 +1,10 @@ +Date: Wed, 22 Apr 2026 16:33:44 +0300 +To: Benny +From: John Doe +Subject: Lorem +Message-ID: +X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 + +Lorem ipsum dolor sit amet diff --git a/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml b/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml new file mode 100644 index 000000000..5c3d9b27d --- /dev/null +++ b/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml @@ -0,0 +1,10 @@ +Date: Wed, 22 Apr 2026 16:25:49 +0300 +To: Benny +From: John Doe +Subject: Lorem +Message-ID: +X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 + +Lorem ipsum dolor sit amet diff --git a/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml b/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml new file mode 100644 index 000000000..253bbb242 --- /dev/null +++ b/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml @@ -0,0 +1,10 @@ +Date: Wed, 22 Apr 2026 16:29:37 +0300 +To: Benny +From: John Doe +Subject: Lorem +Message-ID: +X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 + +Lorem ipsum dolor sit amet From 484f32195c031d1c39c64d7cb104214f1d01d1f4 Mon Sep 17 00:00:00 2001 From: Arman <407448+armanist@users.noreply.github.com> Date: Fri, 24 Apr 2026 21:39:33 +0400 Subject: [PATCH 2/5] [#471] Refactor MiddlewareManager to pure PSR-15 Onion model and remove temp email files --- src/Middleware/MiddlewareManager.php | 6 +- .../Unit/Middleware/MiddlewareManagerTest.php | 137 ++++++++++++++++++ ...9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml | 10 -- ...umRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml | 10 -- ...qgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml | 10 -- 5 files changed, 139 insertions(+), 34 deletions(-) create mode 100644 tests/Unit/Middleware/MiddlewareManagerTest.php delete mode 100644 tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml delete mode 100644 tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml delete mode 100644 tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml diff --git a/src/Middleware/MiddlewareManager.php b/src/Middleware/MiddlewareManager.php index bf6599857..b37792a1e 100644 --- a/src/Middleware/MiddlewareManager.php +++ b/src/Middleware/MiddlewareManager.php @@ -55,16 +55,14 @@ public function __construct(MatchedRoute $matchedRoute) */ public function applyMiddlewares(Request $request, Response $response): Response { - $middleware = current($this->middlewares); - - if (!$middleware) { + if (!current($this->middlewares)) { return $response; } $currentMiddleware = $this->getMiddleware($request, $response); + next($this->middlewares); return $currentMiddleware->apply($request, $response, function (Request $request, Response $response): Response { - next($this->middlewares); return $this->applyMiddlewares($request, $response); }); } diff --git a/tests/Unit/Middleware/MiddlewareManagerTest.php b/tests/Unit/Middleware/MiddlewareManagerTest.php new file mode 100644 index 000000000..65cb42df2 --- /dev/null +++ b/tests/Unit/Middleware/MiddlewareManagerTest.php @@ -0,0 +1,137 @@ +setHeader('X-Test', 'Passed'); + return $next($request, $response); + } + } + + class TestMwBlocker extends QtMiddleware + { + public function apply(Request $request, Response $response, Closure $next): Response + { + TestMwOne::$calls[] = 'TestMwBlocker'; + return $response->json(['status' => 'blocked']); + } + } + + class InvalidMw + { + public function apply(Request $request, Response $response, Closure $next) + { + return $next($request, $response); + } + } +} + +namespace Quantum\Tests\Unit\Middleware { + + use Quantum\Tests\Unit\AppTestCase; + use Quantum\Middleware\MiddlewareManager; + use Quantum\Middleware\Exceptions\MiddlewareException; + use Quantum\Router\MatchedRoute; + use Quantum\Router\Route; + use Mockery; + use Quantum\Tests\_root\modules\Test\Middlewares\TestMwOne; + + class MiddlewareManagerTest extends AppTestCase + { + public function tearDown(): void + { + Mockery::close(); + parent::tearDown(); + } + + public function testMiddlewareManagerExecutesSequentially(): void + { + TestMwOne::$calls = []; + + $route = new Route(['GET'], '/test-route', 'TestController', 'index'); + $route->addMiddlewares(['TestMwOne', 'TestMwTwo']); + $route->module('Test'); + + $matchedRoute = new MatchedRoute($route, []); + + $request = request(); + $response = response(); + + $manager = new MiddlewareManager($matchedRoute); + $result = $manager->applyMiddlewares($request, $response); + + $this->assertSame($response, $result); + $this->assertEquals(['TestMwOne', 'TestMwTwo'], TestMwOne::$calls); + $this->assertEquals('Passed', $result->getHeader('X-Test')); + } + + public function testMiddlewareManagerCanShortCircuit(): void + { + TestMwOne::$calls = []; + + $route = new Route(['GET'], '/test-route', 'TestController', 'index'); + $route->addMiddlewares(['TestMwOne', 'TestMwBlocker', 'TestMwTwo']); + $route->module('Test'); + + $matchedRoute = new MatchedRoute($route, []); + + $request = request(); + $response = response(); + + $manager = new MiddlewareManager($matchedRoute); + $result = $manager->applyMiddlewares($request, $response); + + $this->assertSame($response, $result); + $this->assertEquals(['TestMwOne', 'TestMwBlocker'], TestMwOne::$calls); + $this->assertEquals('{"status":"blocked"}', $result->getContent()); + $this->assertNull($result->getHeader('X-Test')); + } + + public function testMiddlewareManagerThrowsWhenMiddlewareDoesNotExist(): void + { + $this->expectException(MiddlewareException::class); + + $route = new Route(['GET'], '/test-route', 'TestController', 'index'); + $route->addMiddlewares(['NonExistentMw']); + $route->module('Test'); + + $matchedRoute = new MatchedRoute($route, []); + + $manager = new MiddlewareManager($matchedRoute); + $manager->applyMiddlewares(request(), response()); + } + + public function testMiddlewareManagerThrowsWhenNotInstanceOfQtMiddleware(): void + { + $this->expectException(MiddlewareException::class); + + $route = new Route(['GET'], '/test-route', 'TestController', 'index'); + $route->addMiddlewares(['InvalidMw']); + $route->module('Test'); + + $matchedRoute = new MatchedRoute($route, []); + + $manager = new MiddlewareManager($matchedRoute); + $manager->applyMiddlewares(request(), response()); + } + } +} diff --git a/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml b/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml deleted file mode 100644 index b3f124985..000000000 --- a/tests/_root/shared/emails/LKgj9CdQwhpmjhnhsR1AnWLul5MPwTQcGS9IbOmWlI.eml +++ /dev/null @@ -1,10 +0,0 @@ -Date: Wed, 22 Apr 2026 16:33:44 +0300 -To: Benny -From: John Doe -Subject: Lorem -Message-ID: -X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 - -Lorem ipsum dolor sit amet diff --git a/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml b/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml deleted file mode 100644 index 5c3d9b27d..000000000 --- a/tests/_root/shared/emails/nivSumRAq1RaVXbFr2hX5X8q6EG95ReTMq9nkErfJA.eml +++ /dev/null @@ -1,10 +0,0 @@ -Date: Wed, 22 Apr 2026 16:25:49 +0300 -To: Benny -From: John Doe -Subject: Lorem -Message-ID: -X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 - -Lorem ipsum dolor sit amet diff --git a/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml b/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml deleted file mode 100644 index 253bbb242..000000000 --- a/tests/_root/shared/emails/r5yfGqgipoOOy6dvtvZwCAVeb8mBtID5iFVZ0ri0J0A.eml +++ /dev/null @@ -1,10 +0,0 @@ -Date: Wed, 22 Apr 2026 16:29:37 +0300 -To: Benny -From: John Doe -Subject: Lorem -Message-ID: -X-Mailer: PHPMailer 6.12.0 (https://github.com/PHPMailer/PHPMailer) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 - -Lorem ipsum dolor sit amet From 7dc0ce958086cf88f6e927113462cdbf0ad4d13f Mon Sep 17 00:00:00 2001 From: Arman <407448+armanist@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:42:31 +0400 Subject: [PATCH 3/5] [#471] Fix missing returns and indentation in module templates, and fix test isolation --- .../src/Controllers/AccountController.php.tpl | 8 +++---- .../src/Controllers/AuthController.php.tpl | 18 +++++++-------- .../src/Controllers/PostController.php.tpl | 4 ++-- .../PostManagementController.php.tpl | 16 +++++++------- .../src/Middlewares/BaseMiddleware.php.tpl | 4 +--- .../src/Controllers/AuthController.php.tpl | 22 +++++++++---------- .../src/Controllers/BaseController.php.tpl | 2 +- .../src/Controllers/PostController.php.tpl | 5 ++--- .../PostManagementController.php.tpl | 8 +++---- .../DemoWeb/src/Middlewares/Activate.php.tpl | 3 +-- .../DemoWeb/src/Middlewares/PostOwner.php.tpl | 3 +-- .../DemoWeb/src/Middlewares/Reset.php.tpl | 3 +-- .../DemoWeb/src/Middlewares/Verify.php.tpl | 3 +-- .../Toolkit/src/Middlewares/BasicAuth.php.tpl | 8 +++---- tests/Unit/AppTestCase.php | 5 +++++ 15 files changed, 55 insertions(+), 57 deletions(-) diff --git a/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl index 7646e6ca1..b66c73e5b 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/AccountController.php.tpl @@ -63,8 +63,8 @@ class AccountController extends BaseController 'status' => self::STATUS_SUCCESS, 'message' => t('common.updated_successfully') ]); - } catch (AuthException $e) { - $response->json([ + } catch (AuthException $e) { + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() ]); @@ -91,8 +91,8 @@ class AccountController extends BaseController 'status' => self::STATUS_SUCCESS, 'message' => t('common.updated_successfully') ]); - } catch (AuthException $e) { - $response->json([ + } catch (AuthException $e) { + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() ]); diff --git a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl index 4c56c7b0e..42720bad8 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl @@ -40,13 +40,13 @@ class AuthController extends BaseController if (filter_var(config()->get('auth.two_fa'), FILTER_VALIDATE_BOOLEAN)) { $response->set('code', $code); - } + } - $response->json([ + return $response->json([ 'status' => self::STATUS_SUCCESS ]); } catch (AuthException $e) { - $response->json([ + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() ], StatusCode::UNPROCESSABLE_ENTITY); @@ -79,8 +79,8 @@ class AuthController extends BaseController return $response->json([ 'status' => self::STATUS_SUCCESS ]); - } else { - $response->json([ + } else { + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => t('validation.unauthorizedRequest') ], StatusCode::UNAUTHORIZED); @@ -161,8 +161,8 @@ class AuthController extends BaseController return $response->json([ 'status' => self::STATUS_SUCCESS ]); - } catch (AuthException $e) { - $response->json([ + } catch (AuthException $e) { + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() ], StatusCode::UNAUTHORIZED); @@ -180,8 +180,8 @@ class AuthController extends BaseController 'status' => self::STATUS_SUCCESS, 'code' => auth()->resendOtp(route_param('code')) ]); - } catch (AuthException $e) { - $response->json([ + } catch (AuthException $e) { + return $response->json([ 'status' => self::STATUS_ERROR, 'message' => $e->getMessage() ], StatusCode::UNAUTHORIZED); diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl index 78e4f9daf..3416328b0 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl @@ -92,7 +92,7 @@ class PostController extends BaseController ], StatusCode::NOT_FOUND); stop(); - } + } $postData = current($this->postService->transformData([$post])); @@ -104,7 +104,7 @@ class PostController extends BaseController $postData['comments'] = $commentsData; - $response->json([ + return $response->json([ 'status' => 'success', 'data' => $postData, ]); diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl index 5b8d92f5a..de2528702 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl @@ -69,13 +69,13 @@ class PostManagementController extends BaseController auth()->user()->uuid, slugify($request->get('title')) ); - } + } $postDto = PostDTO::fromRequest($request, auth()->user()->uuid, $imageName); $post = $this->postService->addPost($postDto); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.created_successfully'), 'data' => current($this->postService->transformData([$post])) @@ -98,7 +98,7 @@ class PostManagementController extends BaseController if ($request->hasFile('image')) { if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $imageName = $this->postService->saveImage( $request->getFile('image'), @@ -111,7 +111,7 @@ class PostManagementController extends BaseController $post = $this->postService->updatePost($postUuid, $postDto); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.updated_successfully'), 'data' => current($this->postService->transformData([$post])) @@ -130,11 +130,11 @@ class PostManagementController extends BaseController if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $this->postService->deletePost($postUuid); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.deleted_successfully') ]); @@ -152,7 +152,7 @@ class PostManagementController extends BaseController if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $postDto = new PostDTO( $post->title, @@ -163,7 +163,7 @@ class PostManagementController extends BaseController $this->postService->updatePost($postUuid, $postDto); - $response->json([ + return $response->json([ 'status' => 'success', 'message' => t('common.deleted_successfully') ]); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl index adcca4351..19b3a2f41 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl @@ -79,11 +79,9 @@ abstract class BaseMiddleware extends QtMiddleware int $status = StatusCode::UNPROCESSABLE_ENTITY ) { - $response->json([ + return $response->json([ 'status' => 'error', 'message' => $message, ], $status); - - stop(); } } diff --git a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl index c9d580a42..38d6c07de 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl @@ -70,7 +70,7 @@ class AuthController extends BaseController if (filter_var(config()->get('auth.two_fa'), FILTER_VALIDATE_BOOLEAN)) { redirect(base_url(true) . '/' . current_lang() . '/verify/' . $code); - } else { + } else { redirect(base_url(true) . '/' . current_lang()); } } catch (AuthException $e) { @@ -82,7 +82,7 @@ class AuthController extends BaseController 'title' => t('common.signin') . ' | ' . config()->get('app.name'), ]); - $response->html($this->view->render(self::VIEW_SIGNIN)); + return $response->html($this->view->render(self::VIEW_SIGNIN)); } } @@ -109,13 +109,13 @@ class AuthController extends BaseController session()->setFlash('success', t('common.check_email_signup')); redirect(base_url(true) . '/' . current_lang() . '/signup'); - } else { + } else { $this->view->setParams([ // 'captcha' => captcha(), 'title' => t('common.signup') . ' | ' . config()->get('app.name'), ]); - $response->html($this->view->render(self::VIEW_SIGNUP)); + return $response->html($this->view->render(self::VIEW_SIGNUP)); } } @@ -140,12 +140,12 @@ class AuthController extends BaseController auth()->forget($request->get('email')); session()->setFlash('success', t('common.check_email')); redirect(base_url(true) . '/' . current_lang() . '/forget'); - } else { + } else { $this->view->setParams([ 'title' => t('common.forget_password') . ' | ' . config()->get('app.name'), ]); - $response->html($this->view->render(self::VIEW_FORGET)); + return $response->html($this->view->render(self::VIEW_FORGET)); } } @@ -159,13 +159,13 @@ class AuthController extends BaseController if ($request->isMethod('post')) { auth()->reset($request->get('reset_token'), $request->get('password')); redirect(base_url(true) . '/' . current_lang() . '/signin'); - } else { + } else { $this->view->setParams([ 'title' => t('common.reset_password') . ' | ' . config()->get('app.name'), 'reset_token' => $request->get('reset_token') ]); - $response->html($this->view->render(self::VIEW_RESET)); + return $response->html($this->view->render(self::VIEW_RESET)); } } @@ -180,7 +180,7 @@ class AuthController extends BaseController try { auth()->verifyOtp((int)$request->get('otp'), $request->get('code')); redirect(base_url(true) . '/' . current_lang()); - } catch (AuthException $e) { + } catch (AuthException $e) { session()->setFlash('error', $e->getMessage()); redirect(base_url(true) . '/' . current_lang() . '/verify/' . $request->get('code')); } @@ -190,7 +190,7 @@ class AuthController extends BaseController 'code' => route_param('code') ]); - $response->html($this->view->render(self::VIEW_VERIFY)); + return $response->html($this->view->render(self::VIEW_VERIFY)); } } @@ -202,7 +202,7 @@ class AuthController extends BaseController try { $otpToken = auth()->resendOtp(route_param('code')); redirect(base_url(true) . '/' . current_lang() . '/verify/' . $otpToken); - } catch (AuthException $e) { + } catch (AuthException $e) { redirect(base_url(true) . '/' . current_lang() . '/signin'); } } diff --git a/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl index 47e97afed..dfcd198b1 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/BaseController.php.tpl @@ -46,6 +46,6 @@ abstract class BaseController ]); $this->view->setParam('langs', config()->get('lang.supported')); - } + } } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl index d0ea0c659..011380392 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl @@ -93,8 +93,7 @@ class PostController extends BaseController if ($post->isEmpty()) { return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); - stop(); - } + } $commentService = service(CommentService::class); @@ -109,6 +108,6 @@ class PostController extends BaseController 'referer' => nav_ref_decode($ref), ]); - $response->html($this->view->render('post/single')); + return $response->html($this->view->render('post/single')); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl index 9e9eac49f..c9485aab2 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl @@ -91,7 +91,7 @@ class PostManagementController extends BaseController auth()->user()->uuid, slugify($request->get('title')) ); - } + } $postDto = PostDTO::fromRequest($request, auth()->user()->uuid, $imageName); @@ -137,7 +137,7 @@ class PostManagementController extends BaseController if ($request->hasFile('image')) { if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $imageName = $this->postService->saveImage( $request->getFile('image'), @@ -164,7 +164,7 @@ class PostManagementController extends BaseController if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $this->postService->deletePost($postUuid); @@ -182,7 +182,7 @@ class PostManagementController extends BaseController if ($post->image) { $this->postService->deleteImage(auth()->user()->uuid . DS . $post->image); - } + } $postDto = new PostDTO( $post->title, diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl index a14e22edc..5ae53d796 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl @@ -65,7 +65,6 @@ class Activate extends BaseMiddleware */ protected function respondWithError(Request $request, Response $response, $message) { - $response->html(partial('errors/404'), StatusCode::NOT_FOUND); - stop(); + return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl index ac5cad5ae..f6aa3a4c2 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl @@ -66,8 +66,7 @@ class PostOwner extends BaseMiddleware */ protected function respondWithError(Request $request, Response $response, $message = null) { - $response->html(partial('errors/404'), StatusCode::NOT_FOUND); - stop(); + return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } /** diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl index 2116cbcaa..96926d177 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl @@ -80,8 +80,7 @@ class Reset extends BaseMiddleware protected function respondWithError(Request $request, Response $response, $message) { if ($request->isMethod('get') && isset($message['token'])) { - $response->html(partial('errors/404'), StatusCode::NOT_FOUND); - stop(); + return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } session()->setFlash('error', $message); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl index 65d9e5529..9ba54c855 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl @@ -67,8 +67,7 @@ class Verify extends BaseMiddleware protected function respondWithError(Request $request, Response $response, $message) { if ($request->isMethod('get') && isset($message['code'])) { - $response->html(partial('errors/404'), StatusCode::NOT_FOUND); - stop(); + return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } session()->setFlash('error', $message); diff --git a/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl b/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl index 4536e1218..7a4d9ef80 100644 --- a/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl +++ b/src/Module/Templates/Toolkit/src/Middlewares/BasicAuth.php.tpl @@ -37,7 +37,7 @@ class BasicAuth extends QtMiddleware $userCredentials = $request->getBasicAuthCredentials(); if (!$userCredentials || !$this->isValidCredentials($userCredentials)) { - $this->unauthorizedResponse($response); + return $this->unauthorizedResponse($response); } return $next($request, $response); @@ -61,11 +61,11 @@ class BasicAuth extends QtMiddleware /** * @param Response $response + * @return Response */ - private function unauthorizedResponse(Response $response): void + private function unauthorizedResponse(Response $response): Response { $response->setHeader('WWW-Authenticate', 'Basic realm="Quantum Toolkit"'); - $response->html(partial('errors' . DS . '401'), 401); - stop(); + return $response->html(partial('errors' . DS . '401'), 401); } } diff --git a/tests/Unit/AppTestCase.php b/tests/Unit/AppTestCase.php index 09bed980e..0d4cc8201 100644 --- a/tests/Unit/AppTestCase.php +++ b/tests/Unit/AppTestCase.php @@ -13,6 +13,7 @@ use Quantum\App\AppContext; use Quantum\Config\Config; use Quantum\Router\Route; +use Quantum\Http\Response; use ReflectionClass; use Quantum\App\App; use Quantum\Di\Di; @@ -41,6 +42,10 @@ public function tearDown(): void AppFactory::destroy(AppType::WEB); + if (Di::isRegistered(Response::class)) { + response()->flush(); + } + if (Di::isRegistered(Config::class)) { config()->flush(); } From d63d9c53974097402d125df5d72282106c459bd3 Mon Sep 17 00:00:00 2001 From: Arman <407448+armanist@users.noreply.github.com> Date: Mon, 27 Apr 2026 17:32:44 +0400 Subject: [PATCH 4/5] [#471] Finalize return-driven pipeline: propagate middleware validation, update redirect contract, and polish PHPDocs --- src/Http/Helpers/http.php | 13 +++++-------- src/Http/Traits/Response/Header.php | 7 +++---- .../DemoApi/src/Controllers/AuthController.php.tpl | 9 +++++++++ .../DemoApi/src/Controllers/PostController.php.tpl | 4 ++-- .../Controllers/PostManagementController.php.tpl | 5 +++++ .../DemoApi/src/Middlewares/BaseMiddleware.php.tpl | 10 +++++++--- .../DemoApi/src/Middlewares/PostOwner.php.tpl | 4 +++- .../DemoWeb/src/Middlewares/Activate.php.tpl | 6 ++++-- .../DemoWeb/src/Middlewares/BaseMiddleware.php.tpl | 11 ++++++++--- .../DemoWeb/src/Middlewares/PostOwner.php.tpl | 6 ++++-- .../Templates/DemoWeb/src/Middlewares/Reset.php.tpl | 8 +++++--- 11 files changed, 55 insertions(+), 28 deletions(-) diff --git a/src/Http/Helpers/http.php b/src/Http/Helpers/http.php index 2832d5db2..efb01fc51 100644 --- a/src/Http/Helpers/http.php +++ b/src/Http/Helpers/http.php @@ -12,7 +12,6 @@ * @since 3.0.0 */ -use Quantum\App\Exceptions\StopExecutionException; use Quantum\Config\Exceptions\ConfigException; use Quantum\App\Exceptions\BaseException; use Quantum\Di\Exceptions\DiException; @@ -25,7 +24,6 @@ /** * Gets the Request instance from DI - * @throws DiException|ReflectionException */ function request(): Request { @@ -38,7 +36,6 @@ function request(): Request /** * Gets the Response instance from DI - * @throws DiException|ReflectionException */ function response(): Response { @@ -70,11 +67,11 @@ function current_url(): string /** * Redirect - * @throws StopExecutionException|DiException|ReflectionException + * @throws DiException|ReflectionException */ -function redirect(string $url, int $code = StatusCode::FOUND): void +function redirect(string $url, int $code = StatusCode::FOUND): Response { - response()->redirect($url, $code); + return response()->redirect($url, $code); } /** @@ -82,10 +79,10 @@ function redirect(string $url, int $code = StatusCode::FOUND): void * @param array $data * @throws ConfigException|DiException|BaseException|ReflectionException */ -function redirectWith(string $url, array $data, int $code = StatusCode::FOUND): void +function redirectWith(string $url, array $data, int $code = StatusCode::FOUND): Response { session()->set(ReservedKeys::PREV_REQUEST, $data); - response()->redirect($url, $code); + return response()->redirect($url, $code); } /** diff --git a/src/Http/Traits/Response/Header.php b/src/Http/Traits/Response/Header.php index c0394be0d..ba29cf4ac 100644 --- a/src/Http/Traits/Response/Header.php +++ b/src/Http/Traits/Response/Header.php @@ -16,7 +16,6 @@ namespace Quantum\Http\Traits\Response; -use Quantum\App\Exceptions\StopExecutionException; use Quantum\Http\Enums\ContentType; /** @@ -93,12 +92,12 @@ public function getContentType(): string /** * Redirect - * @throws StopExecutionException + * @return self */ - public function redirect(string $url, int $code = 302): void + public function redirect(string $url, int $code = 302): self { $this->setStatusCode($code); $this->setHeader('Location', $url); - stop(); + return $this; } } diff --git a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl index 42720bad8..7a68098bc 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/AuthController.php.tpl @@ -32,6 +32,7 @@ class AuthController extends BaseController * Action - sign in * @param Request $request * @param Response $response + * @return Response */ public function signin(Request $request, Response $response): Response { @@ -56,6 +57,7 @@ class AuthController extends BaseController /** * Action - me * @param Response $response + * @return Response */ public function me(Response $response): Response { @@ -72,6 +74,7 @@ class AuthController extends BaseController /** * Action - sign out * @param Response $response + * @return Response */ public function signout(Response $response): Response { @@ -91,6 +94,7 @@ class AuthController extends BaseController * Action - sign up * @param Request $request * @param Response $response + * @return Response */ public function signup(Request $request, Response $response): Response { @@ -108,6 +112,7 @@ class AuthController extends BaseController * Action - activate * @param Request $request * @param Response $response + * @return Response */ public function activate(Request $request, Response $response): Response { @@ -123,6 +128,7 @@ class AuthController extends BaseController * Action - forget * @param Request $request * @param Response $response + * @return Response */ public function forget(Request $request, Response $response): Response { @@ -138,6 +144,7 @@ class AuthController extends BaseController * Action - reset * @param Request $request * @param Response $response + * @return Response */ public function reset(Request $request, Response $response): Response { @@ -152,6 +159,7 @@ class AuthController extends BaseController * Action - Verify OTP * @param Request $request * @param Response $response + * @return Response */ public function verify(Request $request, Response $response): Response { @@ -172,6 +180,7 @@ class AuthController extends BaseController /** * Action - Resend OTP * @param Response $response + * @return Response */ public function resend(Response $response): Response { diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl index 3416328b0..ae4fca8a9 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostController.php.tpl @@ -54,6 +54,7 @@ class PostController extends BaseController * Action - get posts list * @param Request $request * @param Response $response + * @return Response */ public function posts(Request $request, Response $response): Response { @@ -80,6 +81,7 @@ class PostController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function post(Response $response, ?string $lang, string $postUuid): Response { @@ -90,8 +92,6 @@ class PostController extends BaseController 'status' => 'error', 'message' => t('common.post_not_found') ], StatusCode::NOT_FOUND); - - stop(); } $postData = current($this->postService->transformData([$post])); diff --git a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl index de2528702..3a2af8a5d 100644 --- a/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoApi/src/Controllers/PostManagementController.php.tpl @@ -43,6 +43,7 @@ class PostManagementController extends BaseController /** * Action - get my posts * @param Response $response + * @return Response */ public function myPosts(Response $response): Response { @@ -58,6 +59,7 @@ class PostManagementController extends BaseController * Action - create post * @param Request $request * @param Response $response + * @return Response */ public function create(Request $request, Response $response): Response { @@ -88,6 +90,7 @@ class PostManagementController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function amend(Request $request, Response $response, ?string $lang, string $postUuid): Response { @@ -123,6 +126,7 @@ class PostManagementController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function delete(Response $response, ?string $lang, string $postUuid): Response { @@ -145,6 +149,7 @@ class PostManagementController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function deleteImage(Response $response, ?string $lang, string $postUuid): Response { diff --git a/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl index 19b3a2f41..cdbea3d0b 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/BaseMiddleware.php.tpl @@ -57,12 +57,15 @@ abstract class BaseMiddleware extends QtMiddleware * Validate the request and respond with error if invalid. * @param Request $request * @param Response $response + * @return Response|null */ - protected function validateRequest(Request $request, Response $response) + protected function validateRequest(Request $request, Response $response): ?Response { if (!$this->validator->isValid($request->all())) { - $this->respondWithError($request, $response, $this->validator->getErrors()); + return $this->respondWithError($request, $response, $this->validator->getErrors()); } + + return null; } /** @@ -71,13 +74,14 @@ abstract class BaseMiddleware extends QtMiddleware * @param Response $response * @param mixed $message * @param int $status + * @return Response */ protected function respondWithError( Request $request, Response $response, $message, int $status = StatusCode::UNPROCESSABLE_ENTITY - ) + ): Response { return $response->json([ 'status' => 'error', diff --git a/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl index caac206bb..9701d8a6d 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/PostOwner.php.tpl @@ -39,7 +39,9 @@ class PostOwner extends BaseMiddleware $request->set('uuid', $uuid); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl index 5ae53d796..908c0ceab 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Activate.php.tpl @@ -40,7 +40,9 @@ class Activate extends BaseMiddleware $request->set('token', $token); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } $request->set('activation_token', $token); @@ -63,7 +65,7 @@ class Activate extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/BaseMiddleware.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/BaseMiddleware.php.tpl index e6f0dc480..043527a8c 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/BaseMiddleware.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/BaseMiddleware.php.tpl @@ -45,12 +45,15 @@ abstract class BaseMiddleware extends QtMiddleware /** * @param Request $request * @param Response $response + * @return Response|null */ - protected function validateRequest(Request $request, Response $response) + protected function validateRequest(Request $request, Response $response): ?Response { if (!$this->validator->isValid($request->all())) { - $this->respondWithError($request, $response, $this->validator->getErrors()); + return $this->respondWithError($request, $response, $this->validator->getErrors()); } + + return null; } /** @@ -67,9 +70,11 @@ abstract class BaseMiddleware extends QtMiddleware * @param Request $request * @param Response $response * @param mixed $message + * @return Response */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { // default no-op: subclasses override if needed + return $response; } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl index f6aa3a4c2..48269f5c0 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/PostOwner.php.tpl @@ -41,7 +41,9 @@ class PostOwner extends BaseMiddleware $request->set('uuid', $uuid); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } @@ -64,7 +66,7 @@ class PostOwner extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message = null) + protected function respondWithError(Request $request, Response $response, $message = null): Response { return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl index 96926d177..9e15a4b5c 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl @@ -40,7 +40,9 @@ class Reset extends BaseMiddleware $request->set('token', $token); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } $request->set('reset_token', $token); @@ -77,13 +79,13 @@ class Reset extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { if ($request->isMethod('get') && isset($message['token'])) { return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } session()->setFlash('error', $message); - redirect(get_referrer()); + return redirect(get_referrer()); } } \ No newline at end of file From 3817ecf152a98b2455a73daddc641d46de6a55de Mon Sep 17 00:00:00 2001 From: Arman <407448+armanist@users.noreply.github.com> Date: Mon, 27 Apr 2026 17:58:44 +0400 Subject: [PATCH 5/5] [#471] Finalize return-driven pipeline: propagate middleware validation, update redirect contract, fix referrer fallbacks and polish templates --- .../DemoApi/src/Middlewares/Activate.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Comment.php.tpl | 5 ++- .../src/Middlewares/CommentOwner.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Editor.php.tpl | 6 ++-- .../DemoApi/src/Middlewares/Forget.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Password.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Resend.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Reset.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Signup.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Update.php.tpl | 4 ++- .../DemoApi/src/Middlewares/Verify.php.tpl | 4 ++- .../src/Controllers/AccountController.php.tpl | 11 ++++--- .../src/Controllers/AuthController.php.tpl | 32 ++++++++++++------- .../src/Controllers/CommentController.php.tpl | 6 ++-- .../src/Controllers/PostController.php.tpl | 2 ++ .../PostManagementController.php.tpl | 15 ++++++--- .../DemoWeb/src/Middlewares/Comment.php.tpl | 9 ++++-- .../src/Middlewares/CommentOwner.php.tpl | 4 ++- .../DemoWeb/src/Middlewares/Editor.php.tpl | 10 +++--- .../DemoWeb/src/Middlewares/Forget.php.tpl | 8 +++-- .../DemoWeb/src/Middlewares/Guest.php.tpl | 2 +- .../DemoWeb/src/Middlewares/Resend.php.tpl | 8 +++-- .../DemoWeb/src/Middlewares/Reset.php.tpl | 2 +- .../DemoWeb/src/Middlewares/Signup.php.tpl | 8 +++-- .../DemoWeb/src/Middlewares/Update.php.tpl | 8 +++-- .../DemoWeb/src/Middlewares/Verify.php.tpl | 8 +++-- .../Controllers/DatabaseController.php.tpl | 10 ++++-- .../src/Middlewares/CreateTable.php.tpl | 8 +++-- 28 files changed, 133 insertions(+), 65 deletions(-) diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl index 949b05c49..2a5bada92 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Activate.php.tpl @@ -39,7 +39,9 @@ class Activate extends BaseMiddleware $request->set('token', $token); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } $request->set('activation_token', $token); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl index bbe2c0ff8..14f215f6f 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Comment.php.tpl @@ -33,7 +33,10 @@ class Comment extends BaseMiddleware */ public function apply(Request $request, Response $response, Closure $next): Response { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } + return $next($request, $response); } diff --git a/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl index a6b9fc1fe..73b9602f3 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/CommentOwner.php.tpl @@ -39,7 +39,9 @@ class CommentOwner extends BaseMiddleware $request->set('uuid', $uuid); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl index 365ca2c7e..f780127ba 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Editor.php.tpl @@ -51,7 +51,7 @@ class Editor extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if (!in_array(auth()->user()->role, self::ROLES)) { - $this->respondWithError( + return $this->respondWithError( $request, $response, t('validation.unauthorizedRequest'), @@ -60,7 +60,9 @@ class Editor extends BaseMiddleware } if ($request->isMethod('post') || $request->isMethod('put')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl index 9f4663a66..279194d95 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Forget.php.tpl @@ -37,7 +37,9 @@ class Forget extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl index a5b0b7879..f436ff100 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Password.php.tpl @@ -36,7 +36,9 @@ class Password extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl index e39be440b..3aa1bd888 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Resend.php.tpl @@ -39,7 +39,9 @@ class Resend extends BaseMiddleware $request->set('code', $code); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl index c70afed9d..6ecd9526c 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Reset.php.tpl @@ -39,7 +39,9 @@ class Reset extends BaseMiddleware $request->set('token', $token); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } $request->set('reset_token', $token); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl index 780293796..1f2d41032 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Signup.php.tpl @@ -36,7 +36,9 @@ class Signup extends BaseMiddleware */ public function apply(Request $request, Response $response, Closure $next): Response { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl index 5dbc20da6..6f3ca6e69 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Update.php.tpl @@ -35,7 +35,9 @@ class Update extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); diff --git a/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl b/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl index 27b1c00a1..ae237a2eb 100644 --- a/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl +++ b/src/Module/Templates/DemoApi/src/Middlewares/Verify.php.tpl @@ -37,7 +37,9 @@ class Verify extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl index fd30f9fb3..dca04a15e 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/AccountController.php.tpl @@ -45,6 +45,7 @@ class AccountController extends BaseController /** * Action - show user info * @param Response $response + * @return Response */ public function form(Response $response): Response { @@ -57,7 +58,8 @@ class AccountController extends BaseController /** * Action - update user info - * @param Request $request + * @param Request $request + * @return Response */ public function update(Request $request): Response { @@ -71,12 +73,13 @@ class AccountController extends BaseController auth()->refreshUser(auth()->user()->uuid); - redirect(base_url(true) . '/' . current_lang() . '/account-settings#account_profile'); + return redirect(base_url(true) . '/' . current_lang() . '/account-settings#account_profile'); } /** * Action - update password - * @param Request $request + * @param Request $request + * @return Response */ public function updatePassword(Request $request): Response { @@ -88,6 +91,6 @@ class AccountController extends BaseController 'password' => $hasher->hash($newPassword) ]); - redirect(base_url(true) . '/' . current_lang() . '/account-settings#account_password'); + return redirect(base_url(true) . '/' . current_lang() . '/account-settings#account_password'); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl index 38d6c07de..e043193c7 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/AuthController.php.tpl @@ -61,6 +61,7 @@ class AuthController extends BaseController * Action - sign in * @param Request $request * @param Response $response + * @return Response */ public function signin(Request $request, Response $response): Response { @@ -69,13 +70,13 @@ class AuthController extends BaseController $code = auth()->signin($request->get('email'), $request->get('password'), !!$request->get('remember')); if (filter_var(config()->get('auth.two_fa'), FILTER_VALIDATE_BOOLEAN)) { - redirect(base_url(true) . '/' . current_lang() . '/verify/' . $code); + return redirect(base_url(true) . '/' . current_lang() . '/verify/' . $code); } else { - redirect(base_url(true) . '/' . current_lang()); + return redirect(base_url(true) . '/' . current_lang()); } } catch (AuthException $e) { session()->setFlash('error', $e->getMessage()); - redirect(base_url(true) . '/' . current_lang() . '/signin'); + return redirect(base_url(true) . '/' . current_lang() . '/signin'); } } else { $this->view->setParams([ @@ -88,17 +89,19 @@ class AuthController extends BaseController /** * Action - sign out + * @return Response */ public function signout(): Response { auth()->signout(); - redirect(base_url(true) . '/' . current_lang()); + return redirect(base_url(true) . '/' . current_lang()); } /** * Action - sign up * @param Request $request * @param Response $response + * @return Response */ public function signup(Request $request, Response $response): Response { @@ -108,7 +111,7 @@ class AuthController extends BaseController auth()->signup($userDto->toArray()); session()->setFlash('success', t('common.check_email_signup')); - redirect(base_url(true) . '/' . current_lang() . '/signup'); + return redirect(base_url(true) . '/' . current_lang() . '/signup'); } else { $this->view->setParams([ // 'captcha' => captcha(), @@ -122,24 +125,26 @@ class AuthController extends BaseController /** * Action - activate * @param Request $request + * @return Response */ public function activate(Request $request): Response { auth()->activate($request->get('activation_token')); - redirect(base_url(true) . '/' . current_lang() . '/signin'); + return redirect(base_url(true) . '/' . current_lang() . '/signin'); } /** * Action - forget * @param Request $request * @param Response $response + * @return Response */ public function forget(Request $request, Response $response): Response { if ($request->isMethod('post')) { auth()->forget($request->get('email')); session()->setFlash('success', t('common.check_email')); - redirect(base_url(true) . '/' . current_lang() . '/forget'); + return redirect(base_url(true) . '/' . current_lang() . '/forget'); } else { $this->view->setParams([ 'title' => t('common.forget_password') . ' | ' . config()->get('app.name'), @@ -153,12 +158,13 @@ class AuthController extends BaseController * Action - reset * @param Request $request * @param Response $response + * @return Response */ public function reset(Request $request, Response $response): Response { if ($request->isMethod('post')) { auth()->reset($request->get('reset_token'), $request->get('password')); - redirect(base_url(true) . '/' . current_lang() . '/signin'); + return redirect(base_url(true) . '/' . current_lang() . '/signin'); } else { $this->view->setParams([ 'title' => t('common.reset_password') . ' | ' . config()->get('app.name'), @@ -173,16 +179,17 @@ class AuthController extends BaseController * Action - Verify OTP * @param Request $request * @param Response $response + * @return Response */ public function verify(Request $request, Response $response): Response { if ($request->isMethod('post')) { try { auth()->verifyOtp((int)$request->get('otp'), $request->get('code')); - redirect(base_url(true) . '/' . current_lang()); + return redirect(base_url(true) . '/' . current_lang()); } catch (AuthException $e) { session()->setFlash('error', $e->getMessage()); - redirect(base_url(true) . '/' . current_lang() . '/verify/' . $request->get('code')); + return redirect(base_url(true) . '/' . current_lang() . '/verify/' . $request->get('code')); } } else { $this->view->setParams([ @@ -196,14 +203,15 @@ class AuthController extends BaseController /** * Action - Resend OTP + * @return Response */ public function resend(): Response { try { $otpToken = auth()->resendOtp(route_param('code')); - redirect(base_url(true) . '/' . current_lang() . '/verify/' . $otpToken); + return redirect(base_url(true) . '/' . current_lang() . '/verify/' . $otpToken); } catch (AuthException $e) { - redirect(base_url(true) . '/' . current_lang() . '/signin'); + return redirect(base_url(true) . '/' . current_lang() . '/signin'); } } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl index a75e4c224..5f0f8dd6e 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/CommentController.php.tpl @@ -48,6 +48,7 @@ class CommentController extends BaseController * @param Request $request * @param string|null $lang * @param string $uuid + * @return Response */ public function create(Request $request, ?string $lang, string $uuid): Response { @@ -56,19 +57,20 @@ class CommentController extends BaseController $this->commentService->addComment($commentDto); session()->setFlash('success', t('common.comment_added')); - redirect(get_referrer()); + return redirect(get_referrer() ?? base_url()); } /** * Action - delete comment * @param string|null $lang * @param string $uuid + * @return Response */ public function delete(?string $lang, string $uuid): Response { $this->commentService->deleteComment($uuid); session()->setFlash('success', t('common.comment_deleted')); - redirect(get_referrer()); + return redirect(get_referrer() ?? base_url()); } } diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl index 011380392..a3331aad6 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostController.php.tpl @@ -59,6 +59,7 @@ class PostController extends BaseController * Action - get posts list * @param Request $request * @param Response $response + * @return Response */ public function posts(Request $request, Response $response): Response { @@ -84,6 +85,7 @@ class PostController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function post(Request $request, Response $response, ?string $lang, string $postUuid): Response { diff --git a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl index c9485aab2..5bfdf9880 100644 --- a/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Controllers/PostManagementController.php.tpl @@ -47,6 +47,7 @@ class PostManagementController extends BaseController * Action - get my posts * @param Request $request * @param Response $response + * @return Response */ public function myPosts(Request $request, Response $response): Response { @@ -64,6 +65,7 @@ class PostManagementController extends BaseController * Action - display form for creating a post * @param Request $request * @param Response $response + * @return Response */ public function createFrom(Request $request, Response $response): Response { @@ -80,6 +82,7 @@ class PostManagementController extends BaseController /** * Action - create post * @param Request $request + * @return Response */ public function create(Request $request): Response { @@ -97,7 +100,7 @@ class PostManagementController extends BaseController $this->postService->addPost($postDto); - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + return redirect(base_url(true) . '/' . current_lang() . '/my-posts'); } /** @@ -106,6 +109,7 @@ class PostManagementController extends BaseController * @param Response $response * @param string|null $lang * @param string $postUuid + * @return Response */ public function amendForm(Request $request, Response $response, ?string $lang, string $postUuid): Response { @@ -127,6 +131,7 @@ class PostManagementController extends BaseController * @param Request $request * @param string|null $lang * @param string $postUuid + * @return Response */ public function amend(Request $request, ?string $lang, string $postUuid): Response { @@ -150,13 +155,14 @@ class PostManagementController extends BaseController $this->postService->updatePost($postUuid, $postDto); - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + return redirect(base_url(true) . '/' . current_lang() . '/my-posts'); } /** * Action - delete post * @param string|null $lang * @param string $postUuid + * @return Response */ public function delete(?string $lang, string $postUuid): Response { @@ -168,13 +174,14 @@ class PostManagementController extends BaseController $this->postService->deletePost($postUuid); - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + return redirect(base_url(true) . '/' . current_lang() . '/my-posts'); } /** * Action - delete image of the post * @param string|null $lang * @param string $postUuid + * @return Response */ public function deleteImage(?string $lang, string $postUuid): Response { @@ -193,6 +200,6 @@ class PostManagementController extends BaseController $this->postService->updatePost($postUuid, $postDto); - redirect(base_url(true) . '/' . current_lang() . '/my-posts'); + return redirect(base_url(true) . '/' . current_lang() . '/my-posts'); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl index 1376ab693..76040c80c 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Comment.php.tpl @@ -33,7 +33,10 @@ class Comment extends BaseMiddleware */ public function apply(Request $request, Response $response, Closure $next): Response { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } + return $next($request, $response); } @@ -58,11 +61,11 @@ class Comment extends BaseMiddleware Request $request, Response $response, $message - ) + ): Response { $data = $request->all(); session()->setFlash('error', $this->validator->getErrors()); - redirectWith(get_referrer(), $data); + return redirectWith(get_referrer() ?? base_url(), $data); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl index a6b9fc1fe..73b9602f3 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/CommentOwner.php.tpl @@ -39,7 +39,9 @@ class CommentOwner extends BaseMiddleware $request->set('uuid', $uuid); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl index 110da56ee..4526e18f5 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Editor.php.tpl @@ -50,11 +50,13 @@ class Editor extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if (!in_array(auth()->user()->role, self::ROLES)) { - redirect(base_url(true) . '/' . current_lang()); + return redirect(base_url(true) . '/' . current_lang()); } if ($request->isMethod('post') || $request->isMethod('put')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); @@ -91,13 +93,13 @@ class Editor extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { $data = $request->all(); unset($data['image']); session()->setFlash('error', $this->validator->getErrors()); - redirectWith(get_referrer(), $data); + return redirectWith(get_referrer() ?? base_url(), $data); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl index b0033c4d7..61d5d05a2 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Forget.php.tpl @@ -37,7 +37,9 @@ class Forget extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); @@ -65,13 +67,13 @@ class Forget extends BaseMiddleware Request $request, Response $response, $message - ) + ): Response { $data = $request->all(); unset($data['image']); session()->setFlash('error', $message); - redirectWith(base_url(true) . '/' . current_lang() . '/forget', $data); + return redirectWith(base_url(true) . '/' . current_lang() . '/forget', $data); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl index 21471f924..0933012f7 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Guest.php.tpl @@ -35,7 +35,7 @@ class Guest extends QtMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if (auth()->check()) { - redirect(get_referrer() ?? base_url(true) . '/' . current_lang()); + return redirect(get_referrer() ?? base_url(true) . '/' . current_lang()); } return $next($request, $response); diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl index d9ff59014..3a78be12a 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Resend.php.tpl @@ -39,7 +39,9 @@ class Resend extends BaseMiddleware $request->set('code', $code); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } @@ -63,8 +65,8 @@ class Resend extends BaseMiddleware Request $request, Response $response, $message, - ): void { + ): Response { session()->setFlash('error', $message); - redirect(base_url(true) . '/' . current_lang() . '/signin'); + return redirect(base_url(true) . '/' . current_lang() . '/signin'); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl index 9e15a4b5c..b295d39bd 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Reset.php.tpl @@ -86,6 +86,6 @@ class Reset extends BaseMiddleware } session()->setFlash('error', $message); - return redirect(get_referrer()); + return redirect(get_referrer() ?? base_url()); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl index 35442c68d..db0f7b55f 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Signup.php.tpl @@ -43,7 +43,9 @@ class Signup extends BaseMiddleware $request->delete($captchaName . '-response'); } - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } $request->delete('captcha'); } @@ -82,9 +84,9 @@ class Signup extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { session()->setFlash('error', $message); - redirectWith(base_url(true) . '/' . current_lang() . '/signup', $request->all()); + return redirectWith(base_url(true) . '/' . current_lang() . '/signup', $request->all()); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl index 57dbca5c1..08c106573 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Update.php.tpl @@ -35,7 +35,9 @@ class Update extends BaseMiddleware public function apply(Request $request, Response $response, Closure $next): Response { if ($request->isMethod('post')) { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } } return $next($request, $response); @@ -63,9 +65,9 @@ class Update extends BaseMiddleware Request $request, Response $response, $message - ) + ): Response { session()->setFlash('error', $message); - redirectWith(base_url(true) . '/' . current_lang() . '/account-settings#account_profile', $request->all()); + return redirectWith(base_url(true) . '/' . current_lang() . '/account-settings#account_profile', $request->all()); } } \ No newline at end of file diff --git a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl index 9ba54c855..1c70fbc10 100644 --- a/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl +++ b/src/Module/Templates/DemoWeb/src/Middlewares/Verify.php.tpl @@ -40,7 +40,9 @@ class Verify extends BaseMiddleware $request->set('code', $code); - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } @@ -64,13 +66,13 @@ class Verify extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { if ($request->isMethod('get') && isset($message['code'])) { return $response->html(partial('errors/404'), StatusCode::NOT_FOUND); } session()->setFlash('error', $message); - redirectWith(base_url(true) . '/' . current_lang() . '/verify', $request->all()); + return redirectWith(base_url(true) . '/' . current_lang() . '/verify', $request->all()); } } \ No newline at end of file diff --git a/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl b/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl index c78b4c401..68a452000 100644 --- a/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl +++ b/src/Module/Templates/Toolkit/src/Controllers/DatabaseController.php.tpl @@ -42,6 +42,7 @@ class DatabaseController extends BaseController /** * @param Response $response + * @return Response */ public function list(Response $response): Response { @@ -83,6 +84,7 @@ class DatabaseController extends BaseController /** * @param Request $request + * @return Response */ public function create(Request $request): Response { @@ -92,11 +94,12 @@ class DatabaseController extends BaseController $this->databaseService->createTableRow($tableName, $newData); - redirect(get_referrer()); + return redirect(get_referrer() ?? base_url()); } /** * @param Request $request + * @return Response */ public function update(Request $request): Response { @@ -106,11 +109,12 @@ class DatabaseController extends BaseController $this->databaseService->updateTable($tableName, (int)$id, $updatedData); - redirect(base_url(true) . '/database/view?table=' . $tableName); + return redirect(base_url(true) . '/database/view?table=' . $tableName); } /** * @param Request $request + * @return Response */ public function delete(Request $request): Response { @@ -119,6 +123,6 @@ class DatabaseController extends BaseController $this->databaseService->deleteTableRow($tableName, $id); - redirect(base_url(true) . '/database/view?table=' . $tableName); + return redirect(base_url(true) . '/database/view?table=' . $tableName); } } diff --git a/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl b/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl index 15b4ed661..77c831ed0 100644 --- a/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl +++ b/src/Module/Templates/Toolkit/src/Middlewares/CreateTable.php.tpl @@ -35,7 +35,9 @@ class CreateTable extends BaseMiddleware */ public function apply(Request $request, Response $response, Closure $next): Response { - $this->validateRequest($request, $response); + if ($errorResponse = $this->validateRequest($request, $response)) { + return $errorResponse; + } return $next($request, $response); } @@ -65,10 +67,10 @@ class CreateTable extends BaseMiddleware /** * @inheritDoc */ - protected function respondWithError(Request $request, Response $response, $message) + protected function respondWithError(Request $request, Response $response, $message): Response { session()->setFlash('error', $message); - redirect(get_referrer()); + return redirect(get_referrer() ?? base_url()); } /**