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