From 4eea003fd5f669df906bc8c7bd83db4b2e888cd8 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Mon, 5 Feb 2024 16:54:12 -0400 Subject: [PATCH 1/2] FOUR-13275 When opening a request/task by clicking on it, then clicking the back button, the filter is not applied. If you reload the page, the filter is applied. The filter should be applied when clicking the back button --- ProcessMaker/Http/Controllers/RequestController.php | 7 ++++++- ProcessMaker/Http/Controllers/TaskController.php | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ProcessMaker/Http/Controllers/RequestController.php b/ProcessMaker/Http/Controllers/RequestController.php index 6f03db4b49..fd81e2b6bf 100644 --- a/ProcessMaker/Http/Controllers/RequestController.php +++ b/ProcessMaker/Http/Controllers/RequestController.php @@ -61,9 +61,14 @@ public function index($type = null) $userFilter = SaveSession::getConfigFilter('requestFilter', Auth::user()); - return view('requests.index', compact( + $response = response()->view('requests.index', compact( ['type', 'title', 'currentUser', 'userFilter'] )); + //Indicate to the browser not to cache the page. + $response->header('Cache-Control', 'no-cache, no-store, must-revalidate'); + $response->header('Pragma', 'no-cache'); + $response->header('Expires', '0'); + return $response; } /** diff --git a/ProcessMaker/Http/Controllers/TaskController.php b/ProcessMaker/Http/Controllers/TaskController.php index a0c8095bee..9e49ab5417 100644 --- a/ProcessMaker/Http/Controllers/TaskController.php +++ b/ProcessMaker/Http/Controllers/TaskController.php @@ -43,7 +43,12 @@ public function index() $userFilter = SaveSession::getConfigFilter('taskFilter', Auth::user()); - return view('tasks.index', compact('title', 'userFilter')); + $response = response()->view('tasks.index', compact('title', 'userFilter')); + //Indicate to the browser not to cache the page. + $response->header('Pragma', 'no-cache'); + $response->header('Cache-Control', 'no-cache, no-store, must-revalidate'); + $response->header('Expires', '0'); + return $response; } public function edit(ProcessRequestToken $task, string $preview = '') From e27638fa0f20c3b7ee117229cec30dbce336380a Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Tue, 6 Feb 2024 13:01:39 -0400 Subject: [PATCH 2/2] FOUR-13275 When opening a request/task by clicking on it, then clicking the back button, the filter is not applied. If you reload the page, the filter is applied. The filter should be applied when clicking the back button --- .../Http/Controllers/RequestController.php | 7 +---- .../Http/Controllers/TaskController.php | 7 +---- ProcessMaker/Http/Kernel.php | 1 + ProcessMaker/Http/Middleware/NoCache.php | 26 +++++++++++++++++++ routes/web.php | 12 ++++++--- 5 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 ProcessMaker/Http/Middleware/NoCache.php diff --git a/ProcessMaker/Http/Controllers/RequestController.php b/ProcessMaker/Http/Controllers/RequestController.php index fd81e2b6bf..6f03db4b49 100644 --- a/ProcessMaker/Http/Controllers/RequestController.php +++ b/ProcessMaker/Http/Controllers/RequestController.php @@ -61,14 +61,9 @@ public function index($type = null) $userFilter = SaveSession::getConfigFilter('requestFilter', Auth::user()); - $response = response()->view('requests.index', compact( + return view('requests.index', compact( ['type', 'title', 'currentUser', 'userFilter'] )); - //Indicate to the browser not to cache the page. - $response->header('Cache-Control', 'no-cache, no-store, must-revalidate'); - $response->header('Pragma', 'no-cache'); - $response->header('Expires', '0'); - return $response; } /** diff --git a/ProcessMaker/Http/Controllers/TaskController.php b/ProcessMaker/Http/Controllers/TaskController.php index 9e49ab5417..a0c8095bee 100644 --- a/ProcessMaker/Http/Controllers/TaskController.php +++ b/ProcessMaker/Http/Controllers/TaskController.php @@ -43,12 +43,7 @@ public function index() $userFilter = SaveSession::getConfigFilter('taskFilter', Auth::user()); - $response = response()->view('tasks.index', compact('title', 'userFilter')); - //Indicate to the browser not to cache the page. - $response->header('Pragma', 'no-cache'); - $response->header('Cache-Control', 'no-cache, no-store, must-revalidate'); - $response->header('Expires', '0'); - return $response; + return view('tasks.index', compact('title', 'userFilter')); } public function edit(ProcessRequestToken $task, string $preview = '') diff --git a/ProcessMaker/Http/Kernel.php b/ProcessMaker/Http/Kernel.php index 4501f7a80e..5d1214f54d 100644 --- a/ProcessMaker/Http/Kernel.php +++ b/ProcessMaker/Http/Kernel.php @@ -79,6 +79,7 @@ class Kernel extends HttpKernel 'saml_request' => \ProcessMaker\Http\Middleware\SamlRequest::class, 'session_block' => \ProcessMaker\Http\Middleware\SessionControlBlock::class, 'session_kill' => \ProcessMaker\Http\Middleware\SessionControlKill::class, + 'no-cache' => \ProcessMaker\Http\Middleware\NoCache::class, ]; /** diff --git a/ProcessMaker/Http/Middleware/NoCache.php b/ProcessMaker/Http/Middleware/NoCache.php new file mode 100644 index 0000000000..d85df5ff3b --- /dev/null +++ b/ProcessMaker/Http/Middleware/NoCache.php @@ -0,0 +1,26 @@ +header('Cache-Control', 'no-cache, no-store, must-revalidate'); + $response->header('Pragma', 'no-cache'); + $response->header('Expires', '0'); + + return $response; + } +} diff --git a/routes/web.php b/routes/web.php index 053a3d6a75..75a178e383 100644 --- a/routes/web.php +++ b/routes/web.php @@ -36,6 +36,7 @@ use ProcessMaker\Http\Controllers\TemplateController; use ProcessMaker\Http\Controllers\TestStatusController; use ProcessMaker\Http\Controllers\UnavailableController; +use ProcessMaker\Http\Middleware\NoCache; Route::middleware('auth', 'session_kill', 'sanitize', 'force_change_password', '2fa')->group(function () { // Routes related to Authentication (password reset, etc) @@ -126,15 +127,20 @@ Route::get('requests/search', [RequestController::class, 'search'])->name('requests.search'); Route::get('requests/{type?}', [RequestController::class, 'index']) ->where('type', 'all|in_progress|completed') - ->name('requests_by_type'); + ->name('requests_by_type') + ->middleware('no-cache'); Route::get('request/{request}/files/{media}', [RequestController::class, 'downloadFiles'])->middleware('can:view,request'); - Route::get('requests', [RequestController::class, 'index'])->name('requests.index'); + Route::get('requests', [RequestController::class, 'index']) + ->name('requests.index') + ->middleware('no-cache'); Route::get('requests/{request}', [RequestController::class, 'show'])->name('requests.show'); Route::get('requests/mobile/{request}', [RequestController::class, 'show'])->name('requests.showMobile'); Route::get('requests/{request}/task/{task}/screen/{screen}', [RequestController::class, 'screenPreview'])->name('requests.screen-preview'); Route::get('tasks/search', [TaskController::class, 'search'])->name('tasks.search'); - Route::get('tasks', [TaskController::class, 'index'])->name('tasks.index'); + Route::get('tasks', [TaskController::class, 'index']) + ->name('tasks.index') + ->middleware('no-cache'); Route::get('tasks/{task}/edit', [TaskController::class, 'edit'])->name('tasks.edit'); Route::get('tasks/{task}/edit/{preview}', [TaskController::class, 'edit'])->name('tasks.preview');