Require explicit confirmations for dangerous actions (web + api).
iamshehzada/laravel-action-confirmation is a Laravel package for require explicit confirmations for dangerous actions (web + api)..
It currently has 0 GitHub stars and 3 downloads on Packagist (latest version v1.0.4).
Install it with composer require iamshehzada/laravel-action-confirmation.
Discover more Laravel packages by iamshehzada
or browse all Laravel packages to compare alternatives.
Last updated
Require explicit confirmation before executing dangerous actions in Laravel. Designed for API-first applications to prevent destructive operations (deleting users, issuing refunds, bulk changes) from running without a confirmation token.
composer require iamshehzada/laravel-action-confirmation
php artisan vendor:publish --tag=action-confirmation-config
php artisan vendor:publish --tag=action-confirmation-migrations
php artisan migrate
Example configuration (published to config/action-confirmation.php):
return [
// Header used for API confirmation tokens
'api_header' => 'X-Confirmation-Token',
// Define actions and their rules
'actions' => [
'delete_user' => [
'target' => App\Models\User::class, // model to be acted upon
'ttl' => 300, // token time-to-live in seconds
'channels' => ['api', 'web'], // allowed channels
'reason_required' => true, // require a reason string
],
],
];
use Illuminate\Http\Request;
use App\Models\User;
public function destroy(Request $request, User $user)
{
return confirm()
->action('delete_user')
->by($request->user())
->on($user)
->via('api')
->token($request->header('X-Confirmation-Token'))
->reason($request->input('reason'))
->run(function () use ($user) {
$user->delete();
return response()->json(['deleted' => true]);
});
}
{
"message": "Confirmation required",
"confirmation_id": "AbC123xyz",
"expires_in": 300,
"reason_required": true
}
Header:
X-Confirmation-Token: AbC123xyz
Body:
{
"reason": "User requested account deletion"
}
use Iamshehzada\ActionConfirmation\Exceptions\ConfirmationRequiredException;
try {
// protected action
} catch (ConfirmationRequiredException $e) {
return response()->json($e->toArray(), 409);
}
./vendor/bin/pest