diff --git a/bin/release.sh b/bin/release.sh index 07dd849..e1b4589 100755 --- a/bin/release.sh +++ b/bin/release.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash + set -e if (( "$#" == 0 )) then diff --git a/src/Jwt/AbstractJwt.php b/src/Jwt/AbstractJwt.php index fa7f4a7..eb330db 100644 --- a/src/Jwt/AbstractJwt.php +++ b/src/Jwt/AbstractJwt.php @@ -35,26 +35,32 @@ public function __construct( private readonly RefreshTokenConstraint $refreshTokenConstraint ) {} - public function builderRefreshToken(string $sub): UnencryptedToken + public function builderRefreshToken(string $sub, ?\Closure $callable = null): UnencryptedToken { return $this->getJwtFacade()->issue( $this->getSigner(), $this->getSigningKey(), - function (Builder $builder, \DateTimeImmutable $immutable) use ($sub) { + function (Builder $builder, \DateTimeImmutable $immutable) use ($sub, $callable) { $builder = $builder->identifiedBy($sub); $builder = $builder->expiresAt($this->getRefreshExpireAt($immutable)); + if ($callable !== null) { + $builder = $callable($builder); + } return $builder->relatedTo('refresh'); } ); } - public function builderAccessToken(string $sub): UnencryptedToken + public function builderAccessToken(string $sub, ?\Closure $callable = null): UnencryptedToken { return $this->getJwtFacade()->issue( $this->getSigner(), $this->getSigningKey(), - function (Builder $builder, \DateTimeImmutable $immutable) use ($sub) { + function (Builder $builder, \DateTimeImmutable $immutable) use ($sub, $callable) { $builder = $builder->identifiedBy($sub); + if ($callable !== null) { + $builder = $callable($builder); + } return $builder->expiresAt($this->getExpireAt($immutable)); } ); diff --git a/src/Jwt/JwtInterface.php b/src/Jwt/JwtInterface.php index 6fa7948..d87a8c3 100644 --- a/src/Jwt/JwtInterface.php +++ b/src/Jwt/JwtInterface.php @@ -16,9 +16,9 @@ interface JwtInterface { - public function builderAccessToken(string $sub): UnencryptedToken; + public function builderAccessToken(string $sub, ?\Closure $callable = null): UnencryptedToken; - public function builderRefreshToken(string $sub): UnencryptedToken; + public function builderRefreshToken(string $sub, ?\Closure $callable = null): UnencryptedToken; public function parserAccessToken(string $accessToken): UnencryptedToken;