Installation
composer require dbstudios/veritas-bundle
Add to config/bundles.php:
return [
// ...
DbStudios\VeritasBundle\DbStudiosVeritasBundle::class => ['all' => true],
];
Configuration Publish the default config:
php bin/console veritas:install
Edit config/packages/veritas.yaml to match your JWT provider (e.g., firebase, auth0).
First Use Case Generate a token in a controller:
use DbStudios\VeritasBundle\Veritas;
public function generateToken(Veritas $veritas): Response
{
$token = $veritas->generateToken(['user_id' => 123]);
return new JsonResponse(['token' => $token]);
}
Token Generation
// Basic payload
$token = $veritas->generateToken(['uid' => 'user123']);
// With custom claims
$token = $veritas->generateToken([
'uid' => 'user123',
'custom_claim' => 'value',
], ['exp' => time() + 3600]); // Override defaults
Token Validation
public function validateToken(Veritas $veritas, Request $request): Response
{
$token = $request->headers->get('Authorization');
$claims = $veritas->validateToken($token);
if (!$claims) {
return new Response('Invalid token', 401);
}
return new JsonResponse($claims);
}
Middleware Integration
// src/Kernel.php
protected function build(Request $request): Response
{
$this->addVeritasMiddleware(); // Auto-injected by bundle
return parent::build($request);
}
Custom Providers
Extend DbStudios\VeritasBundle\Provider\AbstractProvider for non-standard JWT providers.
veritas.security.authenticator for guard-based auth.@Security to restrict access:
use ApiPlatform\Core\Annotation\Security;
#[Security("is_granted('ROLE_USER')")]
Token Expiry
exp is 1 hour. Override in veritas.yaml:
veritas:
default_claims:
exp: 86400 # 24 hours
veritas:debug command to inspect token claims.Provider Mismatch
provider in veritas.yaml matches your JWT issuer (e.g., firebase vs. auth0).veritas:install or manually update config/packages/veritas.yaml.CORS Headers
Access-Control-Expose-Headers includes Authorization in your CORS config.Command-Line Tools:
# Generate a token with debug info
php bin/console veritas:generate --payload='{"uid":"test"}' --debug
# Validate a token
php bin/console veritas:validate "your.token.here"
Logging: Enable monolog in veritas.yaml for detailed token events:
veritas:
logging: true
Custom Claims Add a subscriber to modify payloads:
use DbStudios\VeritasBundle\Event\TokenGenerateEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CustomClaimsSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
TokenGenerateEvent::NAME => 'onTokenGenerate',
];
}
public function onTokenGenerate(TokenGenerateEvent $event)
{
$event->setPayload(array_merge($event->getPayload(), ['app_version' => '1.0']));
}
}
Token Storage
Override DbStudios\VeritasBundle\Storage\TokenStorageInterface for custom storage (e.g., Redis).
Provider-Specific Logic
Extend AbstractProvider to handle non-standard JWT formats or claims.
How can I help you explore Laravel packages today?