mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-22 18:03:37 +02:00
Added an button to connect the oauth providers from WebUI
This commit is contained in:
parent
c203de082e
commit
f7648e3311
6 changed files with 28 additions and 4 deletions
|
@ -36,7 +36,7 @@ class DigikeyProvider implements InfoProviderInterface
|
|||
|
||||
private readonly HttpClientInterface $digikeyClient;
|
||||
|
||||
public function __construct(HttpClientInterface $httpClient, private readonly OAuthTokenManager $authTokenManager, string $currency, string $clientId)
|
||||
public function __construct(HttpClientInterface $httpClient, private readonly OAuthTokenManager $authTokenManager, string $currency, private readonly string $clientId)
|
||||
{
|
||||
//Create the HTTP client with some default options
|
||||
$this->digikeyClient = $httpClient->withOptions([
|
||||
|
@ -57,6 +57,7 @@ class DigikeyProvider implements InfoProviderInterface
|
|||
'name' => 'DigiKey',
|
||||
'description' => 'This provider uses the DigiKey API to search for parts.',
|
||||
'url' => 'https://www.digikey.com/',
|
||||
'oauth_app_name' => self::OAUTH_APP_NAME,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -78,7 +79,8 @@ class DigikeyProvider implements InfoProviderInterface
|
|||
|
||||
public function isActive(): bool
|
||||
{
|
||||
return true;
|
||||
//The client ID has to be set and a token has to be available (user clicked connect)
|
||||
return !empty($this->clientId) && $this->authTokenManager->hasToken(self::OAUTH_APP_NAME);
|
||||
}
|
||||
|
||||
public function searchByKeyword(string $keyword): array
|
||||
|
|
|
@ -38,8 +38,9 @@ interface InfoProviderInterface
|
|||
* - logo?: The logo of the provider (e.g. "digikey.png")
|
||||
* - url?: The url of the provider (e.g. "https://www.digikey.com")
|
||||
* - disabled_help?: A help text which is shown when the provider is disabled, explaining how to enable it
|
||||
* - oauth_app_name?: The name of the OAuth app which is used for authentication (e.g. "ip_digikey_oauth"). If this is set a connect button will be shown
|
||||
*
|
||||
* @phpstan-return array{ name: string, description?: string, logo?: string, url?: string, disabled_help?: string }
|
||||
* @phpstan-return array{ name: string, description?: string, logo?: string, url?: string, disabled_help?: string, oauth_app_name?: string }
|
||||
*/
|
||||
public function getProviderInfo(): array;
|
||||
|
||||
|
|
|
@ -74,6 +74,16 @@ final class OAuthTokenManager
|
|||
return $this->entityManager->getRepository(OAuthToken::class)->findOneBy(['name' => $app_name]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a token for the given app name is existing
|
||||
* @param string $app_name
|
||||
* @return bool
|
||||
*/
|
||||
public function hasToken(string $app_name): bool
|
||||
{
|
||||
return $this->getToken($app_name) !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function refreshes the token for the given app name. The new token is saved to the database
|
||||
* The app_name must be registered in the knpu_oauth2_client.yaml
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue