PHP code example of scry / anima
1. Go to this page and download the library: Download scry/anima library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
scry / anima example snippets
return [
/*
|--------------------------------------------------------------------------
| Master Switch
|--------------------------------------------------------------------------
| Enable or disable webhook interception and workbench access.
*/
'enabled' => env('ANIMA_ENABLED', true),
/*
|--------------------------------------------------------------------------
| Route Path
|--------------------------------------------------------------------------
| The base URI path where the Anima Workbench is accessible.
*/
'path' => env('ANIMA_PATH', 'anima'),
/*
|--------------------------------------------------------------------------
| Route Middleware
|--------------------------------------------------------------------------
*/
'middleware' => [
'web',
],
/*
|--------------------------------------------------------------------------
| Allowed Environments
|--------------------------------------------------------------------------
| Safe-by-default environment constraints. Access in other environments
| Destination Restrictions
|--------------------------------------------------------------------------
| Restrict replays to routes carrying the anima.capture middleware.
*/
'replay' => [
'restrict_to_captured_routes' => true,
],
/*
|--------------------------------------------------------------------------
| Rate Limits
|--------------------------------------------------------------------------
| Throttling limits applied to purge and replay endpoints.
*/
'rate_limits' => [
'replay' => '30,1',
'purge' => '10,1',
],
/*
|--------------------------------------------------------------------------
| Storage Driver Configuration
|--------------------------------------------------------------------------
| Supported drivers: "database", "sqlite", "redis"
*/
'storage' => [
'driver' => env('ANIMA_STORAGE_DRIVER', 'database'),
'database' => [
'connection' => env('ANIMA_DB_CONNECTION', null),
'table' => env('ANIMA_DB_TABLE', 'anima_entries'),
],
'sqlite' => [
'database' => env('ANIMA_SQLITE_PATH', storage_path('anima/anima.sqlite')),
'table' => env('ANIMA_SQLITE_TABLE', 'anima_entries'),
],
'redis' => [
'connection' => env('ANIMA_REDIS_CONNECTION', 'default'),
'prefix' => env('ANIMA_REDIS_PREFIX', 'anima:entries'),
'ttl' => env('ANIMA_REDIS_TTL', 86400),
'max_filter_scan' => env('ANIMA_REDIS_MAX_FILTER_SCAN', 5000),
],
],
];
use Anima\Http\Middleware\CaptureWebhook;
use Illuminate\Support\Facades\Route;
// Standard capture
Route::post('/webhooks/payment', [PaymentWebhookController::class, 'handle'])
->middleware('anima.capture');
// Capture with provider tags
Route::post('/webhooks/stripe', [StripeWebhookController::class, 'handle'])
->middleware('anima.capture:stripe,billing');
Route::post('/webhooks/github', [GitHubWebhookController::class, 'handle'])
->middleware('anima.capture:github,vcs');
// Class-string middleware registration is also supported
Route::post('/webhooks/custom', [CustomWebhookController::class, 'handle'])
->middleware(CaptureWebhook::class);
namespace App\Http\Middleware;
use Anima\Traits\BypassesReplaySignatures;
use Closure;
use Illuminate\Http\Request;
class VerifyStripeSignature
{
use BypassesReplaySignatures;
public function handle(Request $request, Closure $next)
{
// Bypass signature verification during local/testing synthetic replays
if ($this->isValidReplay($request)) {
return $next($request);
}
$signature = $request->header('Stripe-Signature');
$payload = $request->getContent();
$secret = config('services.stripe.webhook_secret');
if (! $this->verifySignature($payload, $signature, $secret)) {
return response()->json(['error' => 'Invalid signature'], 401);
}
return $next($request);
}
}
use Anima\Anima;
Anima::auth(function ($request) {
return $request->user()?->isAdmin() ?? false;
});
'redact_headers' => [
'authorization',
'cookie',
'set-cookie',
'x-api-key',
'x-csrf-token',
'x-xsrf-token',
'stripe-signature',
'x-hub-signature',
'x-hub-signature-256',
],
bash
php artisan vendor:publish --tag=anima-config
bash
php artisan vendor:publish --tag=anima-migrations
php artisan migrate
bash
php artisan vendor:publish --tag=anima-assets --force
php artisan vendor:publish --tag=anima-views