1. Go to this page and download the library: Download proklung/url-signer-bundle 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/ */
proklung / url-signer-bundle example snippets
// src/Controller/DocumentController.php
namespace App\Controller;
use CoopTilleuls\UrlSignerBundle\UrlSigner\UrlSignerInterface;
class DocumentController
{
public function __construct(
private UrlSignerInterface $urlSigner,
) {}
}
// src/Controller/DocumentController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class DocumentController extends AbstractController
{
private function generateSignedUrl(): string
{
$url = $this->generateUrl('secured_document', ['id' => 42]);
// Will expire after one hour.
$expiration = (new \DateTime('now'))->add(new \DateInterval('PT1H'));
// An integer can also be used for the expiration: it will correspond to a number of days. For 3 days:
// $expiration = 3;
// Not passing the second argument will use the default expiration time (1 day by default).
// return $this->urlSigner->sign($url);
// Will return a URL (more precisely a path) like this: /documents/42?expires=1611316656&signature=82f6958bd5c96fda58b7a55ade7f651fadb51e12171d58ed271e744bcc7c85c3
return $this->urlSigner->sign($url, $expiration);
}
}
// src/UrlSigner/CustomUrlSigner.php
namespace App\UrlSigner;
use CoopTilleuls\UrlSignerBundle\UrlSigner\AbstractUrlSigner;
use Psr\Http\Message\UriInterface;
class CustomUrlSigner extends AbstractUrlSigner
{
public static function getName(): string
{
return 'custom';
}
protected function createSignature(UriInterface|string $url, string $expiration): string
{
$url = (string) $url;
return hash_hmac('algo', "{$url}::{$expiration}", $this->signatureKey);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.