feat(web,server): external domain setting (#6146)

* feat: external domain setting

* chore: open api

* mobile: handle serverconfig-externalDomain

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
Jason Rasmussen 2024-01-03 21:54:48 -05:00 committed by GitHub
parent 1e503c3212
commit 317adc5c28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 433 additions and 23 deletions

View file

@ -86,6 +86,7 @@ export class ServerConfigDto {
@ApiProperty({ type: 'integer' })
trashDays!: number;
isInitialized!: boolean;
externalDomain!: string;
}
export class ServerFeaturesDto implements FeatureFlags {

View file

@ -184,6 +184,7 @@ describe(ServerInfoService.name, () => {
loginPageMessage: '',
oauthButtonText: 'Login with OAuth',
trashDays: 30,
externalDomain: '',
});
expect(configMock.load).toHaveBeenCalled();
});

View file

@ -89,6 +89,7 @@ export class ServerInfoService {
trashDays: config.trash.days,
oauthButtonText: config.oauth.buttonText,
isInitialized,
externalDomain: config.server.externalDomain,
};
}

View file

@ -0,0 +1,6 @@
import { IsString } from 'class-validator';
export class SystemConfigServerDto {
@IsString()
externalDomain!: string;
}

View file

@ -11,6 +11,7 @@ import { SystemConfigNewVersionCheckDto } from './system-config-new-version-chec
import { SystemConfigOAuthDto } from './system-config-oauth.dto';
import { SystemConfigPasswordLoginDto } from './system-config-password-login.dto';
import { SystemConfigReverseGeocodingDto } from './system-config-reverse-geocoding.dto';
import { SystemConfigServerDto } from './system-config-server.dto';
import { SystemConfigStorageTemplateDto } from './system-config-storage-template.dto';
import { SystemConfigThemeDto } from './system-config-theme.dto';
import { SystemConfigThumbnailDto } from './system-config-thumbnail.dto';
@ -86,6 +87,11 @@ export class SystemConfigDto implements SystemConfig {
@ValidateNested()
@IsObject()
library!: SystemConfigLibraryDto;
@Type(() => SystemConfigServerDto)
@ValidateNested()
@IsObject()
server!: SystemConfigServerDto;
}
export function mapConfig(config: SystemConfig): SystemConfigDto {

View file

@ -127,6 +127,9 @@ export const defaults = Object.freeze<SystemConfig>({
cronExpression: CronExpression.EVERY_DAY_AT_MIDNIGHT,
},
},
server: {
externalDomain: '',
},
});
export enum FeatureFlag {

View file

@ -100,6 +100,9 @@ const updatedConfig = Object.freeze<SystemConfig>({
passwordLogin: {
enabled: true,
},
server: {
externalDomain: '',
},
storageTemplate: {
enabled: false,
hashVerificationEnabled: true,

View file

@ -84,6 +84,8 @@ export enum SystemConfigKey {
PASSWORD_LOGIN_ENABLED = 'passwordLogin.enabled',
SERVER_EXTERNAL_DOMAIN = 'server.externalDomain',
STORAGE_TEMPLATE_ENABLED = 'storageTemplate.enabled',
STORAGE_TEMPLATE_HASH_VERIFICATION_ENABLED = 'storageTemplate.hashVerificationEnabled',
STORAGE_TEMPLATE = 'storageTemplate.template',
@ -244,4 +246,7 @@ export interface SystemConfig {
cronExpression: string;
};
};
server: {
externalDomain: string;
};
}