162 lines
5.0 KiB
TypeScript
162 lines
5.0 KiB
TypeScript
import { MUSIC_SOURCE_PLATFORMS } from '~~/server/config/constants'
|
|
|
|
export const normalizeScheduleVisibilitySettings = (settings) => {
|
|
for (const field of [
|
|
'scheduleDaysBeforeEnabled',
|
|
'scheduleDaysBefore',
|
|
'scheduleDaysAfterEnabled',
|
|
'scheduleDaysAfter'
|
|
]) {
|
|
if (Object.prototype.hasOwnProperty.call(settings, field) && settings[field] === null) {
|
|
delete settings[field]
|
|
}
|
|
}
|
|
return settings
|
|
}
|
|
|
|
export const SYSTEM_SETTINGS_DEFAULTS = {
|
|
telemetryEnabled: true,
|
|
enablePlayTimeSelection: false,
|
|
siteTitle: 'VoiceHub',
|
|
siteLogoUrl: '/favicon.ico',
|
|
schoolLogoHomeUrl: null,
|
|
schoolLogoPrintUrl: null,
|
|
siteDescription: '校园广播站点歌系统 - 让你的声音被听见',
|
|
submissionGuidelines: `1. 投稿时无需加入书名号
|
|
2. 除DJ外,其他类型歌曲均接收(包括小语种)
|
|
3. 禁止投递含有违规内容的歌曲
|
|
4. 点播的歌曲将由管理员进行审核
|
|
5. 审核通过后将安排在播放时段播出
|
|
6. 提交即表明我已阅读投稿须知并已知该歌曲有概率无法播出
|
|
7. 本系统仅提供音乐搜索和播放管理功能,不存储任何音乐文件。所有音乐内容均来自第三方音乐平台,版权归原平台及版权方所有。用户点歌时请确保遵守相关音乐平台的服务条款,尊重音乐作品版权。我们鼓励用户支持正版音乐,在官方平台购买和收听喜爱的音乐作品。
|
|
8. 最终解释权归广播站所有`,
|
|
icpNumber: null,
|
|
gonganNumber: null,
|
|
showBeianIcon: false,
|
|
enableSubmissionLimit: false,
|
|
dailySubmissionLimit: null,
|
|
weeklySubmissionLimit: null,
|
|
monthlySubmissionLimit: null,
|
|
scheduleDaysBeforeEnabled: false,
|
|
scheduleDaysBefore: 1,
|
|
scheduleDaysAfterEnabled: false,
|
|
scheduleDaysAfter: 1,
|
|
showBlacklistKeywords: false,
|
|
hideStudentInfo: true,
|
|
enableReplayRequests: false,
|
|
enableCollaborativeSubmission: true,
|
|
enableSubmissionRemarks: false,
|
|
// 卡密点歌相关
|
|
enableCardCodeRequests: false,
|
|
requireCardCodeForRequests: false,
|
|
enableCardCodeLimitBypass: false,
|
|
// 重复投稿限制
|
|
enableSubmissionRestriction: false,
|
|
submissionRestrictionScope: 'all',
|
|
sameSongRestrictionHours: null,
|
|
sameArtistRestrictionHours: null,
|
|
enableRequestTimeLimitation: false,
|
|
forceBlockAllRequests: false,
|
|
forcePasswordChangeOnFirstLogin: false,
|
|
smtpEnabled: false,
|
|
smtpHost: null,
|
|
smtpPort: 587,
|
|
smtpSecure: false,
|
|
smtpUsername: null,
|
|
smtpPassword: null,
|
|
smtpFromEmail: null,
|
|
smtpFromName: '校园广播站',
|
|
allowOAuthRegistration: false,
|
|
allowRegister: false,
|
|
registerRequiresApproval: true,
|
|
oauthRegisterRequiresApproval: true,
|
|
registerEmailRequired: false,
|
|
registerRequiresGradeClass: false,
|
|
submissionNoteRequiresApproval: false,
|
|
captchaEnabled: false, // 默认关闭图形验证码
|
|
captchaMaxFailures: 3, //触发阈值
|
|
captchaProvider: 'graphic', // 默认使用图形验证码
|
|
turnstileSiteKey: null,
|
|
turnstileSecretKey: null,
|
|
// 自动备份
|
|
autoBackupEnabled: false,
|
|
autoBackupConfig: null,
|
|
// 站点统计代码(任意统计平台 HTML/JS 片段)
|
|
statisticsCodeEnabled: false,
|
|
statisticsCode: null,
|
|
// 主题管理
|
|
defaultTheme: 'System',
|
|
enabledThemes: JSON.stringify(['System', 'ClassicDark', 'ClassicLight', 'ModernLight']),
|
|
// 平台管理
|
|
enabledPlatforms: JSON.stringify([...MUSIC_SOURCE_PLATFORMS]),
|
|
platformOrder: JSON.stringify([...MUSIC_SOURCE_PLATFORMS]),
|
|
}
|
|
|
|
export const PUBLIC_SETTINGS_FIELDS = [
|
|
'siteTitle',
|
|
'siteLogoUrl',
|
|
'schoolLogoHomeUrl',
|
|
'schoolLogoPrintUrl',
|
|
'siteDescription',
|
|
'submissionGuidelines',
|
|
'icpNumber',
|
|
'gonganNumber',
|
|
'showBeianIcon',
|
|
'enablePlayTimeSelection',
|
|
'enableSubmissionLimit',
|
|
'dailySubmissionLimit',
|
|
'weeklySubmissionLimit',
|
|
'monthlySubmissionLimit',
|
|
'showBlacklistKeywords',
|
|
'hideStudentInfo',
|
|
'enableReplayRequests',
|
|
'enableSubmissionRestriction',
|
|
'enableCollaborativeSubmission',
|
|
'enableSubmissionRemarks',
|
|
'enableCardCodeRequests',
|
|
'requireCardCodeForRequests',
|
|
'enableCardCodeLimitBypass',
|
|
'enableRequestTimeLimitation',
|
|
'forceBlockAllRequests',
|
|
'forcePasswordChangeOnFirstLogin',
|
|
'smtpEnabled',
|
|
'allowOAuthRegistration',
|
|
'allowRegister',
|
|
'registerRequiresApproval',
|
|
'oauthRegisterRequiresApproval',
|
|
'registerEmailRequired',
|
|
'registerRequiresGradeClass',
|
|
'submissionNoteRequiresApproval',
|
|
'githubOAuthEnabled',
|
|
'casdoorOAuthEnabled',
|
|
'googleOAuthEnabled',
|
|
'aggregateOAuthEnabled',
|
|
'aggregateOAuthLoginType',
|
|
'customOAuthEnabled',
|
|
'customOAuthDisplayName',
|
|
'captchaEnabled',
|
|
'captchaMaxFailures',
|
|
'captchaProvider',
|
|
'turnstileSiteKey',
|
|
'enabledPlatforms',
|
|
'platformOrder',
|
|
'defaultTheme',
|
|
'enabledThemes'
|
|
]
|
|
|
|
export const filterPublicSettings = (data: any) => {
|
|
if (!data) {
|
|
return {}
|
|
}
|
|
const result: Record<string, any> = {}
|
|
for (const key of PUBLIC_SETTINGS_FIELDS) {
|
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
result[key] = data[key]
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
//为兼容旧代码,导出别名
|
|
export { SYSTEM_SETTINGS_DEFAULTS as defaultSystemSettings }
|