Moved gravatar and update checking settings to the settings-bundle system

This commit is contained in:
Jan Böhmer 2024-07-16 21:58:41 +02:00
parent 2bc50b2888
commit 2ef46cdd34
9 changed files with 90 additions and 25 deletions

5
.env
View file

@ -37,16 +37,11 @@ DEFAULT_LANG="en"
DEFAULT_TIMEZONE="Europe/Berlin"
# The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country
BASE_CURRENCY="EUR"
# Use gravatars for user avatars, when user has no own avatar defined
USE_GRAVATAR=0
# The public reachable URL of this Part-DB installation. This is used for generating links in SAML and email templates
# This must end with a slash!
DEFAULT_URI="https://partdb.changeme.invalid/"
# Disable that if you do not want that Part-DB connects to GitHub to check for available updates, or if your server can not connect to the internet
CHECK_FOR_UPDATES=1
###################################################################################
# Email settings
###################################################################################

View file

@ -21,11 +21,8 @@ parameters:
# Users and Privacy
######################################################################################################################
partdb.gdpr_compliance: true # If this option is activated, IP addresses are anonymized to be GDPR compliant
partdb.users.use_gravatar: '%env(bool:USE_GRAVATAR)%' # Set to false, if no Gravatar images should be used for user profiles.
partdb.users.email_pw_reset: '%env(bool:ALLOW_EMAIL_PW_RESET)%' # Config if users are able, to reset their password by email. By default this enabled, when a mail server is configured.
partdb.check_for_updates: '%env(bool:CHECK_FOR_UPDATES)' # Set to false, if Part-DB should not contact the GitHub API to check for updates
######################################################################################################################
# Mail settings
######################################################################################################################
@ -110,7 +107,6 @@ parameters:
env(DEFAULT_TIMEZONE): 'Europe/Berlin'
env(INSTANCE_NAME): 'Part-DB'
env(BASE_CURRENCY): 'EUR'
env(USE_GRAVATAR): '0'
env(REDIRECT_TO_HTTPS): 0

View file

@ -184,10 +184,6 @@ services:
tags:
- { name: 'translation.extractor', alias: 'permissionExtractor'}
App\Services\UserSystem\UserAvatarHelper:
arguments:
$use_gravatar: '%partdb.users.use_gravatar%'
App\Form\Type\ThemeChoiceType:
arguments:
$available_themes: '%partdb.available_themes%'
@ -313,10 +309,6 @@ services:
arguments:
$project_dir: '%kernel.project_dir%'
App\Services\System\UpdateAvailableManager:
arguments:
$check_for_updates: '%partdb.check_for_updates%'
App\Doctrine\Middleware\MySQLSSLConnectionMiddlewareWrapper:
arguments:

View file

@ -63,7 +63,7 @@ class ToolsController extends AbstractController
'enabled_locales' => $this->getParameter('partdb.locale_menu'),
'demo_mode' => $this->getParameter('partdb.demo_mode'),
'gpdr_compliance' => $this->getParameter('partdb.gdpr_compliance'),
'use_gravatar' => $this->getParameter('partdb.users.use_gravatar'),
'use_gravatar' => $settings->system->privacy->useGravatar,
'email_password_reset' => $this->getParameter('partdb.users.email_pw_reset'),
'enviroment' => $this->getParameter('kernel.environment'),
'is_debug' => $this->getParameter('kernel.debug'),

View file

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace App\Services\System;
use App\Settings\SystemSettings\PrivacySettings;
use Psr\Log\LoggerInterface;
use Shivas\VersioningBundle\Service\VersionManagerInterface;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
@ -43,7 +44,7 @@ class UpdateAvailableManager
public function __construct(private readonly HttpClientInterface $httpClient,
private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager,
private readonly bool $check_for_updates, private readonly LoggerInterface $logger,
private readonly PrivacySettings $privacySettings, private readonly LoggerInterface $logger,
#[Autowire(param: 'kernel.debug')] private readonly bool $is_dev_mode)
{
@ -83,7 +84,7 @@ class UpdateAvailableManager
public function isUpdateAvailable(): bool
{
//If we don't want to check for updates, we can return false
if (!$this->check_for_updates) {
if (!$this->privacySettings->checkForUpdates) {
return false;
}
@ -101,7 +102,7 @@ class UpdateAvailableManager
private function getLatestVersionInfo(): array
{
//If we don't want to check for updates, we can return dummy data
if (!$this->check_for_updates) {
if (!$this->privacySettings->checkForUpdates) {
return [
'version' => '0.0.1',
'url' => 'update-checking-disabled'

View file

@ -30,6 +30,7 @@ use App\Entity\Attachments\UserAttachment;
use App\Entity\UserSystem\User;
use App\Services\Attachments\AttachmentSubmitHandler;
use App\Services\Attachments\AttachmentURLGenerator;
use App\Settings\SystemSettings\PrivacySettings;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Asset\Packages;
use Symfony\Component\HttpFoundation\File\UploadedFile;
@ -42,7 +43,7 @@ class UserAvatarHelper
public const IMG_DEFAULT_AVATAR_PATH = 'img/default_avatar.svg';
public function __construct(
private readonly bool $use_gravatar,
private readonly PrivacySettings $privacySettings,
private readonly Packages $packages,
private readonly AttachmentURLGenerator $attachmentURLGenerator,
private readonly EntityManagerInterface $entityManager,
@ -65,7 +66,7 @@ class UserAvatarHelper
}
//If not check if gravatar is enabled (then use gravatar URL)
if ($this->use_gravatar) {
if ($this->privacySettings->useGravatar) {
return $this->getGravatar($user, 200); //200px wide picture
}
@ -82,7 +83,7 @@ class UserAvatarHelper
}
//If not check if gravatar is enabled (then use gravatar URL)
if ($this->use_gravatar) {
if ($this->privacySettings->useGravatar) {
return $this->getGravatar($user, 50); //50px wide picture
}
@ -99,7 +100,7 @@ class UserAvatarHelper
}
//If not check if gravatar is enabled (then use gravatar URL)
if ($this->use_gravatar) {
if ($this->privacySettings->useGravatar) {
return $this->getGravatar($user, 150);
}

View file

@ -26,6 +26,7 @@ namespace App\Settings;
use App\Settings\SystemSettings\AttachmentsSettings;
use App\Settings\SystemSettings\CustomizationSettings;
use App\Settings\SystemSettings\HistorySettings;
use App\Settings\SystemSettings\PrivacySettings;
use Jbtronics\SettingsBundle\Settings\EmbeddedSettings;
use Jbtronics\SettingsBundle\Settings\Settings;
@ -35,6 +36,9 @@ class SystemSettings
#[EmbeddedSettings()]
public ?CustomizationSettings $customization = null;
#[EmbeddedSettings()]
public ?PrivacySettings $privacy = null;
#[EmbeddedSettings()]
public ?AttachmentsSettings $attachments = null;

View file

@ -0,0 +1,52 @@
<?php
/*
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
*
* Copyright (C) 2019 - 2024 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\SystemSettings;
use Jbtronics\SettingsBundle\Metadata\EnvVarMode;
use Jbtronics\SettingsBundle\Settings\Settings;
use Jbtronics\SettingsBundle\Settings\SettingsParameter;
use Jbtronics\SettingsBundle\Settings\SettingsTrait;
use Symfony\Component\Translation\TranslatableMessage as TM;
#[Settings]
class PrivacySettings
{
use SettingsTrait;
#[SettingsParameter(
label: new TM("settings.system.privacy.checkForUpdates"),
description: new TM("settings.system.privacy.checkForUpdates.description"),
envVar: 'bool:CHECK_FOR_UPDATES', envVarMode: EnvVarMode::OVERWRITE)]
public bool $checkForUpdates = true;
/**
* @var bool Use gravatars for user avatars, when user has no own avatar defined
*/
#[SettingsParameter(
label: new TM("settings.system.privacy.useGravatar"),
description: new TM("settings.system.privacy.useGravatar.description"),
envVar: 'bool:USE_GRAVATAR', envVarMode: EnvVarMode::OVERWRITE)]
public bool $useGravatar = false;
}

View file

@ -12527,5 +12527,29 @@ Please note, that you can not impersonate a disabled user. If you try you will g
<target>Data structure deletion</target>
</segment>
</unit>
<unit id="Zq5CzmY" name="settings.system.privacy.useGravatar">
<segment>
<source>settings.system.privacy.useGravatar</source>
<target>Use Gravatar avatars</target>
</segment>
</unit>
<unit id="sEoU2wK" name="settings.system.privacy.useGravatar.description">
<segment>
<source>settings.system.privacy.useGravatar.description</source>
<target>If a user does not have an avatar image specified, use the avatar from Gravatar based on the user email. This causes the browser to load pictures from a third-party!</target>
</segment>
</unit>
<unit id="BDvK0bP" name="settings.system.privacy.checkForUpdates">
<segment>
<source>settings.system.privacy.checkForUpdates</source>
<target>Check for Part-DB updates</target>
</segment>
</unit>
<unit id="lAbjHIw" name="settings.system.privacy.checkForUpdates.description">
<segment>
<source>settings.system.privacy.checkForUpdates.description</source>
<target>Part-DB regularly checks if a new version is available on GitHub. Disable this here, if you do not want this or if your server can not connect to the internet.</target>
</segment>
</unit>
</file>
</xliff>