- 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
Generally all Laravel authorization and authentication functionality
should work out of the box when JwtAuthenticationGuard is configured properly.
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.
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
Add Absolvent\api\Http\Middleware\PreparePatchMultiPartForm to Absolvent\api\Http\Kernel::$middleware
Make sure that PreparePatchMultiPartForm is after ValidatePostSize