Skip to content

Commit

Permalink
Add retry button to provision-request-show view
Browse files Browse the repository at this point in the history
  • Loading branch information
uphlewis committed Feb 21, 2023
1 parent 3d7b79c commit 6ee88c7
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
49 changes: 49 additions & 0 deletions app/Http/Controllers/Web/ProvisionRequestRetryController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

declare(strict_types=1);

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use App\Http\Controllers\Traits\InteractsWithRegistry;
use App\Http\Controllers\Traits\TransformsArrayDot;
use App\Models\ProviderConfiguration;
use App\Models\ProvisionRequest;
use App\Services\ProvisionRequestService;
use Illuminate\Http\Request;

class ProvisionRequestRetryController extends Controller
{
use InteractsWithRegistry;
use TransformsArrayDot;

public function __invoke(Request $request, ProvisionRequest $provision_request)
{
$configuration = $provision_request->configuration;

if (!isset($configuration)) {
return redirect(route('provision-request-new', ['provision_request_id' => $provision_request->id]))
->withErrors([
'configuration_id' => 'Configuration not found',
]);
}

$function = $provision_request->getFunction();

if (!isset($function)) {
return redirect(route('provision-request-new', ['provision_request_id' => $provision_request->id]))
->withErrors([
'function_name' => sprintf('Function %s not found', $provision_request->function_name),
]);
}

$parameters = $provision_request->parameter_data;

$service = new ProvisionRequestService();
$retriedRequest = $service->create($function, $configuration, $parameters);

return redirect(
route('provision-request-show', ['provision_request' => $retriedRequest])
);
}
}
26 changes: 26 additions & 0 deletions app/Http/Middleware/VerifyCsrfToken.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

namespace App\Http\Middleware;

use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
use Illuminate\Session\TokenMismatchException;

class VerifyCsrfToken extends Middleware
{
Expand All @@ -21,4 +23,28 @@ class VerifyCsrfToken extends Middleware
protected $except = [
//
];

/**
* Always verify the CSRF token if present in the request.
*/
public function handle($request, Closure $next)
{
if ($this->getTokenFromRequest($request) && !$this->tokensMatch($request)) {
throw new TokenMismatchException('CSRF token mismatch.');
}

return parent::handle($request, $next);
}

/**
* @inheritDoc
*/
protected function getTokenFromRequest($request)
{
if ($request->route('_token')) {
return $request->route('_token');
}

return parent::getTokenFromRequest($request);
}
}
1 change: 1 addition & 0 deletions resources/views/provision-request-show.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<a class="ui icon button" href="{{ route('provision-request-new', ['provision_request_id' => $provision_request->id, 'function_name' => '', 'use_result_data' => $provision_request->isSuccess()]) }}">Next Request <i class="blue play circle icon"></i></a>
<a class="ui icon button" href="{{ route('provision-request-new', ['provision_request_id' => $provision_request->id, 'function_name' => $provision_request->function_name, 'use_result_data' => false]) }}">Duplicate <i class="primary copy icon"></i></a>
<a class="ui icon button" href="{{ route('provision-request-index', ['configuration_id' => $provision_request->configuration_id, 'function_name' => $provision_request->function_name]) }}">Related Requests <i class="zoom-in icon"></i></a>
<a class="ui icon button" href="{{ route('provision-request-retry', ['provision_request' => $provision_request, '_token' => csrf_token()]) }}">Retry <i class="redo circle icon"></i></a>
<a class="ui icon button" id="provision-request-delete-button">Delete <i class="red trash icon"></i></a>
</div>
@if($provision_request->isSuccess())
Expand Down
1 change: 1 addition & 0 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
Route::post('/provision_requests/new', ProvisionRequestNewController::class)->name('provision-request-new');
Route::get('/provision_requests/new', ProvisionRequestNewController::class)->name('provision-request-new');
Route::post('/provision_requests', ProvisionRequestStoreController::class)->name('provision-request-store');
Route::get('/provision_requests/{provision_request}/retry/{_token}', ProvisionRequestRetryController::class)->name('provision-request-retry');
Route::get('/provision_requests/{provision_request}', ProvisionRequestShowController::class)->name('provision-request-show');
Route::delete('/provision_requests/{provision_request}', ProvisionRequestDestroyController::class)->name('provision-request-destroy');

0 comments on commit 6ee88c7

Please sign in to comment.