certd/packages/libs/lib-server/src/system/settings/service/models.ts

211 lines
4.4 KiB
TypeScript

import { cloneDeep } from 'lodash-es';
export class BaseSettings {
static __key__: string;
static __title__: string;
static __access__ = 'private';
static getCacheKey() {
return 'settings.' + this.__key__;
}
}
export class SysPublicSettings extends BaseSettings {
static __key__ = 'sys.public';
static __title__ = '系统公共设置';
static __access__ = 'public';
registerEnabled = false;
userValidTimeEnabled?:boolean = false;
passwordLoginEnabled = true;
usernameRegisterEnabled = true;
mobileRegisterEnabled = false;
smsLoginEnabled = false;
emailRegisterEnabled = false;
selfServicePasswordRetrievalEnabled = false;
limitUserPipelineCount = 0;
managerOtherUserPipeline = false;
icpNo?: string;
mpsNo?: string;
robots?: boolean = true;
aiChatEnabled = true;
}
export class SysPrivateSettings extends BaseSettings {
static __title__ = '系统私有设置';
static __access__ = 'private';
static __key__ = 'sys.private';
jwtKey?: string;
encryptSecret?: string;
httpsProxy? = '';
httpProxy? = '';
dnsResultOrder? = '';
commonCnameEnabled?: boolean = true;
sms?: {
type?: string;
config?: any;
} = {
type: 'aliyun',
config: {},
};
removeSecret() {
const clone = cloneDeep(this);
delete clone.jwtKey;
delete clone.encryptSecret;
return clone;
}
}
export class SysInstallInfo extends BaseSettings {
static __title__ = '系统安装信息';
static __key__ = 'sys.install';
static __access__ = 'private';
installTime?: number;
siteId?: string;
bindUserId?: number;
bindUrl?: string;
accountServerBaseUrl?: string;
appKey?: string;
}
export class SysLicenseInfo extends BaseSettings {
static __title__ = '授权许可信息';
static __key__ = 'sys.license';
static __access__ = 'private';
license?: string;
}
export class SysEmailConf extends BaseSettings {
static __title__ = '邮箱配置';
static __key__ = 'sys.email';
static __access__ = 'private';
host: string;
port: number;
auth: {
user: string;
pass: string;
};
secure: boolean; // use TLS
tls: {
// do not fail on invalid certs
rejectUnauthorized: boolean;
};
sender: string;
usePlus?: boolean;
}
export class SysSiteInfo extends BaseSettings {
static __title__ = '站点信息';
static __key__ = 'sys.site';
static __access__ = 'public';
title?: string;
slogan?: string;
logo?: string;
loginLogo?: string;
}
export class SysSecretBackup extends BaseSettings {
static __title__ = '密钥信息备份';
static __key__ = 'sys.secret.backup';
static __access__ = 'private';
siteId?: string;
encryptSecret?: string;
}
/**
* 不要修改
*/
export class SysSecret extends BaseSettings {
static __title__ = '密钥信息';
static __key__ = 'sys.secret';
static __access__ = 'private';
siteId?: string;
encryptSecret?: string;
}
export class SysSiteEnv {
agent?: {
enabled?: boolean;
contactText?: string;
contactLink?: string;
};
}
export type MenuItem = {
id: string;
title: string;
icon: string;
link: string;
auth: boolean;
permission?: string;
children?: MenuItem[];
};
export class SysHeaderMenus extends BaseSettings {
static __title__ = '顶部菜单';
static __key__ = 'sys.header.menus';
static __access__ = 'public';
menus: MenuItem[];
}
export type PaymentItem = {
enabled: boolean;
accessId?: number;
};
export class SysPaymentSetting extends BaseSettings {
static __title__ = '支付设置';
static __key__ = 'sys.payment';
static __access__ = 'private';
yizhifu?: PaymentItem = { enabled: false };
alipay?: PaymentItem = { enabled: false };
wxpay?: PaymentItem = { enabled: false };
}
export class SysSuiteSetting extends BaseSettings {
static __title__ = '套餐设置';
static __key__ = 'sys.suite';
static __access__ = 'private';
enabled:boolean = false;
registerGift?: {
productId: number;
duration: number;
};
intro?: string;
}
export type SiteHidden = {
enabled: boolean;
openPath?: string;
//md5 hash 两次后保存
openPassword?: string;
autoHiddenTimes?: number;
hiddenOpenApi?: boolean
};
export class SysSafeSetting extends BaseSettings {
static __title__ = '站点安全设置';
static __key__ = 'sys.safe';
static __access__ = 'private';
// 站点隐藏
hidden:SiteHidden = {
enabled: false,
hiddenOpenApi:false,
autoHiddenTimes: 5,
};
}