PHP code example of kakaprodo / presigned-action
1. Go to this page and download the library: Download kakaprodo/presigned-action 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/ */
kakaprodo / presigned-action example snippets
use Kakaprodo\PresignedAction\Facades\PresignedAction;
$accessKey = PresignedAction::generateAccessKey([
'accessible' => $order,
'whoami' => 'partner-42',
'expires_at' => now()->addHour(),
'origin' => 'partner-api',
'scopes' => ['orders.read', 'orders.download'],
'permissions' => ['orders.view'],
'settings' => [
'source' => 'partner-api',
],
]);
return response()->json($accessKey->formatPublicTempKey());
use Kakaprodo\PresignedAction\Middleware\VerifyAccessKeyMiddleware;
Route::middleware(VerifyAccessKeyMiddleware::class)
->get('/orders/{order}', ...);
$accessKey = PresignedAction::temporaryAccessKey();
// or
$accessKey = request()->temporaryAccessKey();
Route::middleware([
VerifyAccessKeyMiddleware::class,
PresignedActionScopeMiddleware::class . ':orders.read,orders.download',
])->get('/orders/{order}/download', ...);
$accessKey->hasScope(['orders.read']);
$accessKey->hasPermission(['orders.view']);
$accessKey->can(['orders.view']); // shortcut for hasPermission()
$accessKey->revalidateAccissible($order);
$accessKey->revalidateWhoami('partner-42');
protected $middlewareAliases = [
'presigned-action.origin' => \Kakaprodo\PresignedAction\Middleware\PresignedActionOriginMiddleware::class,
'presigned-action.permission' => \Kakaprodo\PresignedAction\Middleware\PresignedActionPermissionMiddleware::class,
'presigned-action.scope' => \Kakaprodo\PresignedAction\Middleware\PresignedActionScopeMiddleware::class,
];
Route::middleware([
VerifyAccessKeyMiddleware::class,
'presigned-action.origin:partner-api',
'presigned-action.permission:orders.view',
])->get('/orders', ...);
use Kakaprodo\PresignedAction\Facades\PresignedAction;
use Kakaprodo\PresignedAction\Models\TemporaryAccessKey;
PresignedAction::validator()->register('orders', [
'owns' => fn (TemporaryAccessKey $accessKey, $orderId) => $accessKey->whoami === $orderId,
]);
PresignedAction::validator()->register('simple', fn (TemporaryAccessKey $accessKey, $value) => $value !== null);
PresignedAction::validator()->check('orders.owns', [$orderId]);
PresignedAction::validator()->check('simple', [$value]);
PresignedAction::validator()->check(
'orders.owns',
[$orderId],
'This order is not accessible.',
);
return [
'should_run_migration' => true,
'key_expires_after' => 3600,
'access_key_validation' => [
'whoami' => 'X-WHOMAI',
'temp_access_key' => 'X-TEMP-ACCESS-KEY',
],
];
bash
php artisan vendor:publish --tag=config-presigned-action
bash
php artisan presigned-action:purge-expired