absolvent / bundle-api
Installs: 7 686
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 8
Forks: 1
Type:project
pkg:composer/absolvent/bundle-api
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\AuthServiceProvidertoconfig/app.phpproviders. - Create 
config/jwt.phpsimilar toconfig/jwt.phpin this bundle - Change 
defaults.guardtojwtinconfig/auth.php - Add
 
'jwt' => [
    'driver' => 'jwt',
    'provider' => 'users',
],
to guards in config/auth.php
- Add 
JWT_SECRETvariable 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