mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-05-15 16:01:33 +00:00
Added settings controlling if browser plugin is active or not
This commit is contained in:
parent
b11f4a4f9c
commit
01886e8ce5
4 changed files with 74 additions and 0 deletions
|
|
@ -26,12 +26,15 @@ use App\Entity\UserSystem\User;
|
|||
use App\Services\InfoProviderSystem\ProviderRegistry;
|
||||
use App\Services\InfoProviderSystem\SubmittedPageStorage;
|
||||
use App\Services\InfoProviderSystem\DTOs\BrowserSubmittedPage;
|
||||
use App\Settings\InfoProviderSystem\BrowserPluginSettings;
|
||||
use App\Settings\SystemSettings\CustomizationSettings;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
|
|
@ -48,6 +51,7 @@ class BrowserPluginController extends AbstractController
|
|||
private readonly SubmittedPageStorage $browserHtmlStorage,
|
||||
private readonly ProviderRegistry $providerRegistry,
|
||||
private readonly CustomizationSettings $customizationSettings,
|
||||
private readonly BrowserPluginSettings $browserPluginSettings,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +66,7 @@ class BrowserPluginController extends AbstractController
|
|||
public function getInfo(): JsonResponse
|
||||
{
|
||||
$this->denyAccessUnlessGranted('@info_providers.create_parts');
|
||||
$this->throwIfDisabled();
|
||||
|
||||
$activeProviders = $this->providerRegistry->getActiveProviders();
|
||||
|
||||
|
|
@ -105,6 +110,7 @@ class BrowserPluginController extends AbstractController
|
|||
): JsonResponse
|
||||
{
|
||||
$this->denyAccessUnlessGranted('@info_providers.create_parts');
|
||||
$this->throwIfDisabled();
|
||||
|
||||
$payload = $request->getPayload();
|
||||
|
||||
|
|
@ -125,4 +131,11 @@ class BrowserPluginController extends AbstractController
|
|||
'redirect_url' => $redirectUrl ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
public function throwIfDisabled(): void
|
||||
{
|
||||
if (!$this->browserPluginSettings->enabled) {
|
||||
throw HttpException::fromStatusCode(451, "Browser plugin feature is disabled by the administrator, ask him to enable it in system settings.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
40
src/Settings/InfoProviderSystem/BrowserPluginSettings.php
Normal file
40
src/Settings/InfoProviderSystem/BrowserPluginSettings.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||
*
|
||||
* Copyright (C) 2019 - 2026 Jan Böhmer (https://github.com/jbtronics)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace App\Settings\InfoProviderSystem;
|
||||
|
||||
use App\Settings\SettingsIcon;
|
||||
use Jbtronics\SettingsBundle\Metadata\EnvVarMode;
|
||||
use Jbtronics\SettingsBundle\Settings\Settings;
|
||||
use Jbtronics\SettingsBundle\Settings\SettingsParameter;
|
||||
use Symfony\Component\Translation\TranslatableMessage as TM;
|
||||
|
||||
#[Settings(name: "browser_plugin", label: new TM("settings.ips.browser_plugin"), description: new TM("settings.ips.browser_plugin.description"))]
|
||||
#[SettingsIcon("fa-cloud-arrow-up")]
|
||||
class BrowserPluginSettings
|
||||
{
|
||||
#[SettingsParameter(label: new TM("settings.ips.lcsc.enabled"), description: new TM("settings.ips.browser_plugin.enabled.help"),
|
||||
envVar: "bool:BROWSER_PLUGIN_ENABLED", envVarMode: EnvVarMode::OVERWRITE
|
||||
)]
|
||||
public bool $enabled = false;
|
||||
}
|
||||
|
|
@ -37,6 +37,9 @@ class InfoProviderSettings
|
|||
#[EmbeddedSettings]
|
||||
public ?InfoProviderGeneralSettings $general = null;
|
||||
|
||||
#[EmbeddedSettings]
|
||||
public ?BrowserPluginSettings $browserPlugin = null;
|
||||
|
||||
#[EmbeddedSettings]
|
||||
public ?GenericWebProviderSettings $genericWebProvider = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -13619,5 +13619,23 @@ Buerklin-API Authentication server:
|
|||
<target>Pages recently submitted from your browser extension. Click to create a part using the captured HTML.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="lVUU9s7" name="settings.ips.browser_plugin">
|
||||
<segment>
|
||||
<source>settings.ips.browser_plugin</source>
|
||||
<target>Browser plugin</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="IrJs3fI" name="settings.ips.browser_plugin.description">
|
||||
<segment>
|
||||
<source>settings.ips.browser_plugin.description</source>
|
||||
<target>The browser plugin allows to submit pages to Part-DB directly from a browser to create new parts. HTML content is submitted, so that extraction even works on DDOS protected pages, or pages requiring javascript for correct rendering. The Generic Web or AI Web extractor needs to be enabled to be useful.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="_8UrMCB" name="settings.ips.browser_plugin.enabled.help">
|
||||
<segment>
|
||||
<source>settings.ips.browser_plugin.enabled.help</source>
|
||||
<target>When enabled users with the info provider permission can submit pages to Part-DB and retrieve them later.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue