Dancer2-Plugin-JWT
view release on metacpan or search on metacpan
lib/Dancer2/Plugin/JWT.pm view on Meta::CPAN
205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
}
if
(
$set_cookie_header
&&
$app
->request->cookies->{_jwt}) {
$encoded
=
$app
->request->cookies->{_jwt}->value ;
}
elsif
(
$app
->request->param(
'_jwt'
)) {
$encoded
=
$app
->request->param(
'_jwt'
);
}
if
(
$encoded
) {
my
$decoded
;
eval
{
$decoded
= decode_jwt(
token
=>
$encoded
,
key
=>
$secret
,
verify_iat
=>
$need_iat
,
verify_nbf
=>
$need_nbf
,
verify_exp
=>
defined
$need_exp
? 1 : 0 ,
leeway
=>
$need_leeway
,
accepted_alg
=>
$alg
,
accepted_enc
=>
$enc
);
};
if
($@) {
$app
->execute_hook(
'plugin.jwt.jwt_exception'
=> (
$a
= $@));
# this is weird, but required!
};
$app
->request->var(
'jwt'
,
$decoded
);
$app
->request->var(
'jwt_status'
=>
'present'
);
}
else
{
## no token
$app
->request->var(
'jwt_status'
=>
'missing'
);
}
}
)
);
$dsl
->app->add_hook(
Dancer2::Core::Hook->new(
name
=>
'after'
,
code
=>
sub
{
my
$response
=
shift
;
my
$decoded
=
$dsl
->app->request->var(
'jwt'
);
if
(
$set_authorization_header
||
$set_cookie_header
||
$set_location_header
) {
# If all are disabled, then skip also encoding!
if
(
defined
(
$decoded
)) {
my
$encoded
= encode_jwt(
payload
=>
$decoded
,
key
=>
$secret
,
alg
=>
$alg
,
enc
=>
$enc
,
auto_iat
=>
$need_iat
,
relative_exp
=>
$need_exp
,
relative_nbf
=>
$need_nbf
);
if
(
$set_authorization_header
) {
$response
->headers->authorization(
$encoded
);
}
( run in 0.396 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )