mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 09:35:49 +02:00
Allow to authenticate using Authorization: Token header, which the KiCAD API uses
This commit is contained in:
parent
feca20ef77
commit
6b0f0d31b9
3 changed files with 32 additions and 1 deletions
|
@ -141,6 +141,19 @@ services:
|
||||||
$saml_role_mapping: '%env(json:SAML_ROLE_MAPPING)%'
|
$saml_role_mapping: '%env(json:SAML_ROLE_MAPPING)%'
|
||||||
$update_group_on_login: '%env(bool:SAML_UPDATE_GROUP_ON_LOGIN)%'
|
$update_group_on_login: '%env(bool:SAML_UPDATE_GROUP_ON_LOGIN)%'
|
||||||
|
|
||||||
|
|
||||||
|
security.access_token_extractor.header.token:
|
||||||
|
class: Symfony\Component\Security\Http\AccessToken\HeaderAccessTokenExtractor
|
||||||
|
arguments:
|
||||||
|
$tokenType: 'Token'
|
||||||
|
|
||||||
|
security.access_token_extractor.main:
|
||||||
|
class: Symfony\Component\Security\Http\AccessToken\ChainAccessTokenExtractor
|
||||||
|
arguments:
|
||||||
|
$accessTokenExtractors:
|
||||||
|
- '@security.access_token_extractor.header'
|
||||||
|
- '@security.access_token_extractor.header.token'
|
||||||
|
|
||||||
####################################################################################################################
|
####################################################################################################################
|
||||||
# Cache
|
# Cache
|
||||||
####################################################################################################################
|
####################################################################################################################
|
||||||
|
|
|
@ -46,7 +46,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
class ApiTokenAuthenticator implements AuthenticatorInterface
|
class ApiTokenAuthenticator implements AuthenticatorInterface
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
#[Autowire(service: 'security.access_token_extractor.header')]
|
#[Autowire(service: 'security.access_token_extractor.main')]
|
||||||
private readonly AccessTokenExtractorInterface $accessTokenExtractor,
|
private readonly AccessTokenExtractorInterface $accessTokenExtractor,
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly EntityManagerInterface $entityManager,
|
private readonly EntityManagerInterface $entityManager,
|
||||||
|
|
|
@ -96,6 +96,24 @@ class APITokenAuthenticationTest extends ApiTestCase
|
||||||
self::assertResponseIsSuccessful();
|
self::assertResponseIsSuccessful();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testWithAuthorizationToken(): void
|
||||||
|
{
|
||||||
|
//For the KICAD API it should also work with Authorization: Token header instead of Bearer
|
||||||
|
self::ensureKernelShutdown();
|
||||||
|
$client = static::createClient([], ['headers' => ['authorization' => 'Token '.APITokenFixtures::TOKEN_ADMIN]]);;
|
||||||
|
|
||||||
|
//Read should be possible
|
||||||
|
$client->request('GET', '/api/parts');
|
||||||
|
self::assertResponseIsSuccessful();
|
||||||
|
|
||||||
|
//Trying to list all users
|
||||||
|
$client->request('GET', '/api/users');
|
||||||
|
self::assertResponseIsSuccessful();
|
||||||
|
|
||||||
|
$client->request('POST', '/api/footprints', ['json' => ['name' => 'post test']]);
|
||||||
|
self::assertResponseIsSuccessful();
|
||||||
|
}
|
||||||
|
|
||||||
protected function createClientWithCredentials(string $token): Client
|
protected function createClientWithCredentials(string $token): Client
|
||||||
{
|
{
|
||||||
return static::createClient([], ['headers' => ['authorization' => 'Bearer '.$token]]);
|
return static::createClient([], ['headers' => ['authorization' => 'Bearer '.$token]]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue