From 838db4a8f5ecb45ea0fb7cb44f97c188a04194e4 Mon Sep 17 00:00:00 2001 From: rubikscraft Date: Sun, 1 Jan 2023 14:28:46 +0100 Subject: [PATCH] Add preference for storage parameters --- .../preference-defaults.service.ts | 11 ++++++- frontend/src/app/i18n/sys-pref.i18n.ts | 31 +++++++++++++++++++ shared/src/dto/sys-preferences.enum.ts | 21 +++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/backend/src/collections/preference-db/preference-defaults.service.ts b/backend/src/collections/preference-db/preference-defaults.service.ts index 34105a6..2ba2606 100644 --- a/backend/src/collections/preference-db/preference-defaults.service.ts +++ b/backend/src/collections/preference-db/preference-defaults.service.ts @@ -4,6 +4,7 @@ import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum'; import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum'; import { generateRandomString } from 'picsur-shared/dist/util/random'; import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.service'; +import { FileStorageConfigService } from '../../config/early/filestorage.config.service'; // This specific service holds the default values for system and user preferences // It needs to be in a service because the values depend on the environment @@ -13,7 +14,7 @@ import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.servi export class PreferenceDefaultsService { private readonly logger = new Logger(PreferenceDefaultsService.name); - constructor(private readonly jwtConfigService: EarlyJwtConfigService) {} + constructor(private readonly jwtConfigService: EarlyJwtConfigService,private readonly fsConfigService: FileStorageConfigService) {} private readonly usrDefaults: { [key in UsrPreference]: (() => PrefValueType) | PrefValueType; @@ -47,6 +48,14 @@ export class PreferenceDefaultsService { [SysPreference.ConversionTimeLimit]: '15s', [SysPreference.ConversionMemoryLimit]: 512, + [SysPreference.FSLocalPath]: () => this.fsConfigService.getLocalPath(), + [SysPreference.FSS3Endpoint]: () => this.fsConfigService.getS3Endpoint() ?? '', + [SysPreference.FSS3Bucket]: () => this.fsConfigService.getS3Bucket(), + [SysPreference.FSS3Region]: () => this.fsConfigService.getS3Region(), + [SysPreference.FSS3AccessKey]: () => this.fsConfigService.getS3AccessKey(), + [SysPreference.FSS3SecretKey]: () => this.fsConfigService.getS3SecretKey(), + + [SysPreference.EnableTracking]: false, [SysPreference.TrackingUrl]: '', [SysPreference.TrackingId]: '', diff --git a/frontend/src/app/i18n/sys-pref.i18n.ts b/frontend/src/app/i18n/sys-pref.i18n.ts index f6415da..6ce06c3 100644 --- a/frontend/src/app/i18n/sys-pref.i18n.ts +++ b/frontend/src/app/i18n/sys-pref.i18n.ts @@ -57,6 +57,37 @@ export const SysPreferenceUI: { category: 'Authentication', }, + [SysPreference.FSLocalPath]: { + name: 'FS Local - Path', + helpText: 'Storage location of the local storage provider.', + category: 'File Storage', + }, + [SysPreference.FSS3Endpoint]: { + name: 'FS S3 - Endpoint', + helpText: 'Custom endpoint of the S3 storage provider.', + category: 'File Storage', + }, + [SysPreference.FSS3Bucket]: { + name: 'FS S3 - Bucket', + helpText: 'Bucket of the S3 storage provider.', + category: 'File Storage', + }, + [SysPreference.FSS3Region]: { + name: 'FS S3 - Region', + helpText: 'Region of the S3 storage provider.', + category: 'File Storage', + }, + [SysPreference.FSS3AccessKey]: { + name: 'FS S3 - Access Key', + helpText: 'Access key of the S3 storage provider.', + category: 'File Storage', + }, + [SysPreference.FSS3SecretKey]: { + name: 'FS S3 - Secret Key', + helpText: 'Secret key of the S3 storage provider.', + category: 'File Storage', + }, + [SysPreference.EnableTracking]: { name: 'Enable Ackee Web Tracking', helpText: diff --git a/shared/src/dto/sys-preferences.enum.ts b/shared/src/dto/sys-preferences.enum.ts index 93953df..2abd52e 100644 --- a/shared/src/dto/sys-preferences.enum.ts +++ b/shared/src/dto/sys-preferences.enum.ts @@ -19,6 +19,13 @@ export enum SysPreference { ConversionTimeLimit = 'conversion_time_limit', ConversionMemoryLimit = 'conversion_memory_limit', + FSLocalPath = 'fs_local_path', + FSS3Endpoint = 'fs_s3_endpoint', + FSS3Bucket = 'fs_s3_bucket', + FSS3Region = 'fs_s3_region', + FSS3AccessKey = 'fs_s3_access_key', + FSS3SecretKey = 'fs_s3_secret_key', + EnableTracking = 'enable_tracking', TrackingUrl = 'tracking_url', TrackingId = 'tracking_id', @@ -45,6 +52,13 @@ export const SysPreferenceValueTypes: { [SysPreference.ConversionTimeLimit]: 'string', [SysPreference.ConversionMemoryLimit]: 'number', + [SysPreference.FSLocalPath]: 'string', + [SysPreference.FSS3Endpoint]: 'string', + [SysPreference.FSS3Bucket]: 'string', + [SysPreference.FSS3Region]: 'string', + [SysPreference.FSS3AccessKey]: 'string', + [SysPreference.FSS3SecretKey]: 'string', + [SysPreference.EnableTracking]: 'boolean', [SysPreference.TrackingUrl]: 'string', [SysPreference.TrackingId]: 'string', @@ -67,6 +81,13 @@ export const SysPreferenceValidators: { [SysPreference.ConversionTimeLimit]: IsValidMS(), [SysPreference.ConversionMemoryLimit]: IsPosInt(), + [SysPreference.FSLocalPath]: z.string(), + [SysPreference.FSS3Endpoint]: z.string().regex(URLRegex).or(z.literal('')), + [SysPreference.FSS3Bucket]: z.string(), + [SysPreference.FSS3Region]: z.string(), + [SysPreference.FSS3AccessKey]: z.string(), + [SysPreference.FSS3SecretKey]: z.string(), + [SysPreference.EnableTracking]: z.boolean(), [SysPreference.TrackingUrl]: z.string().regex(URLRegex).or(z.literal('')), [SysPreference.TrackingId]: IsEntityID().or(z.literal('')),