mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-20 17:15:51 +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)%'
|
||||
$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
|
||||
####################################################################################################################
|
||||
|
|
|
@ -46,7 +46,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
|||
class ApiTokenAuthenticator implements AuthenticatorInterface
|
||||
{
|
||||
public function __construct(
|
||||
#[Autowire(service: 'security.access_token_extractor.header')]
|
||||
#[Autowire(service: 'security.access_token_extractor.main')]
|
||||
private readonly AccessTokenExtractorInterface $accessTokenExtractor,
|
||||
private readonly TranslatorInterface $translator,
|
||||
private readonly EntityManagerInterface $entityManager,
|
||||
|
|
|
@ -96,6 +96,24 @@ class APITokenAuthenticationTest extends ApiTestCase
|
|||
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
|
||||
{
|
||||
return static::createClient([], ['headers' => ['authorization' => 'Bearer '.$token]]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue