absolvent / bundle-api
2.3.0
2018-03-16 10:27 UTC
Requires
- php: >=7.1.0
- absolvent/bundle-swagger: ^1.4.8
- codecasts/laravel-jwt: ^0.8.5
- laravel/framework: 5.4.*|5.6.*
- league/fractal: ^0.15.0
- league/uri: ^5.0
- riverline/multipart-parser: ^1.1
- symfony/yaml: ^3.2
Requires (Dev)
- barryvdh/laravel-ide-helper: ^2.4
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.7
README
JWT Authentication Guard
Enable in project
- Add
Absolvent\api\Providers\AuthServiceProvider
toconfig/app.php
providers. - Create
config/jwt.php
similar toconfig/jwt.php
in this bundle - Change
defaults.guard
tojwt
inconfig/auth.php
- Add
'jwt' => [
'driver' => 'jwt',
'provider' => 'users',
],
to guards
in config/auth.php
- Add
JWT_SECRET
variable to.env
(eq.JWT_SECRET=SvfJknJLYWwvadkCLVE7HIzn2JpWDkXv
)
NOTE: JWT_SECRET
should be te same as in microservice-users
Usage
Generally all Laravel authorization and authentication functionality
should work out of the box when JwtAuthenticationGuard
is configured properly.
Get jwt token / user information
use Illuminate\Support\Facades\Auth;
$user = Auth::user(); // returns JwtUser or null
$user = Auth::authenticate() // returns JwtUser or throws Exception
$jwtToken = Auth::getName(); // returns jwt token
$userSub = Auth::id(); // returns user email (jwt token `sub` claim)
User information are taken from jwt token so there are very basic.
To get extended user information you have to issue call to microservice-users
.
Permission based endpoint authentication
Add permission
or can
middleware to endpoint controller
class EndpointController extends \Absolvent\api\Http\Controller
{
public function __construct()
{
$this->middleware('permission:TALENTDAYS_ADMIN|TALENTDAYS_AREA');
}
// ...
}
In above example only user with TALENTDAYS_ADMIN
or TALENTDAYS_AREA
can access the endpoint
Allow sending PATH requests with multipart-form content type
Add Absolvent\api\Http\Middleware\PreparePatchMultiPartForm
to Absolvent\api\Http\Kernel::$middleware
Make sure that PreparePatchMultiPartForm
is after ValidatePostSize