tymondesigns / jwt-auth

🔐 JSON Web Token Authentication for Laravel & Lumen

Home Page:https://jwt-auth.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Carbon\Carbon::rawAddUnit(): Argument #3 ($value) must be of type int|float, string given

farshan-dev opened this issue · comments

in laravel 11.x

This problem occurs when JWT_LEEWAY is set to 1 in the .env file.

Carbon\Carbon::rawAddUnit(): Argument #3 ($value) must be of type int|float, string given, called in C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Units.php on line 356 {"exception":"[object] (TypeError(code: 0): Carbon\Carbon::rawAddUnit(): Argument #3 ($value) must be of type int|float, string given, called in C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Units.php on line 356 at C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Units.php:455)
[stacktrace]
#0 C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Units.php(356): Carbon\Carbon::rawAddUnit(Object(Carbon\Carbon), 'second', '1')
#1 C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Date.php(2925): Carbon\Carbon->addUnit('second', '1', NULL)
#2 C:\codes\hst\vendor\nesbot\carbon\src\Carbon\Traits\Date.php(2616): Carbon\Carbon->callModifierMethod('second', Array)
#3 C:\codes\hst\vendor\tymon\jwt-auth\src\Support\Utils.php(51): Carbon\Carbon->__call('addSeconds', Array)
#4 C:\codes\hst\vendor\tymon\jwt-auth\src\Claims\DatetimeTrait.php(80): Tymon\JWTAuth\Support\Utils::isPast(Object(Carbon\Carbon), '1')
#5 C:\codes\hst\vendor\tymon\jwt-auth\src\Claims\Expiration.php(30): Tymon\JWTAuth\Claims\Expiration->isPast(1717051371)
#6 [internal function]: Tymon\JWTAuth\Claims\Expiration->validatePayload()

I solved it (and other similar issues) by adding the int cast (int) to every "time-based" config that may come from the .env file. For example:
'ttl' => (int) env('JWT_TTL', 60)
'refresh_ttl' => (int) env('JWT_REFRESH_TTL', 20160)