完善接单平台上传与物品规则
This commit is contained in:
@@ -45,13 +45,32 @@ export function validateRuntimeConfig(
|
||||
|
||||
requireInteger(issues, 'server.port', config.server?.port, { min: 1, max: 65535 })
|
||||
requireInteger(issues, 'database.maxConnections', config.database?.maxConnections, { min: 1 })
|
||||
requireInteger(issues, 'storage.maxUploadSizeMb', config.storage?.maxUploadSizeMb, {
|
||||
min: 1,
|
||||
max: 100,
|
||||
})
|
||||
requireInteger(issues, 'orders.tokenTtlHours', config.orders?.tokenTtlHours, { min: 1 })
|
||||
requireInteger(issues, 'admin.sessionTtlHours', config.admin?.sessionTtlHours, { min: 1 })
|
||||
requireInteger(issues, 'platforms.cloudtentacles.timeoutMs', config.platforms?.cloudtentacles?.timeoutMs, { min: 1 })
|
||||
requireInteger(
|
||||
issues,
|
||||
'platforms.cloudtentacles.timeoutMs',
|
||||
config.platforms?.cloudtentacles?.timeoutMs,
|
||||
{ min: 1 },
|
||||
)
|
||||
if (config.platforms?.kuaishouFeifei) {
|
||||
requireInteger(issues, 'platforms.kuaishouFeifei.timeoutMs', config.platforms.kuaishouFeifei.timeoutMs, { min: 1 })
|
||||
requireInteger(
|
||||
issues,
|
||||
'platforms.kuaishouFeifei.timeoutMs',
|
||||
config.platforms.kuaishouFeifei.timeoutMs,
|
||||
{ min: 1 },
|
||||
)
|
||||
}
|
||||
requireInteger(issues, 'platforms.cloudtentacles.bindUrlTtlSeconds', config.platforms?.cloudtentacles?.bindUrlTtlSeconds, { min: 1 })
|
||||
requireInteger(
|
||||
issues,
|
||||
'platforms.cloudtentacles.bindUrlTtlSeconds',
|
||||
config.platforms?.cloudtentacles?.bindUrlTtlSeconds,
|
||||
{ min: 1 },
|
||||
)
|
||||
requireInteger(
|
||||
issues,
|
||||
'platforms.cloudtentacles.bindUrlProbeIntervalSeconds',
|
||||
@@ -66,10 +85,18 @@ export function validateRuntimeConfig(
|
||||
)
|
||||
|
||||
validateOptionalHttpUrl(issues, 'orders.claimBaseUrl', config.orders?.claimBaseUrl)
|
||||
validateOptionalStorageEndpoint(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateRequiredString(issues, 'data.root', config.data?.root)
|
||||
|
||||
if (productionLike) {
|
||||
validateRequiredString(issues, 'database.url', config.database?.url)
|
||||
validateRequiredString(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateOptionalStorageEndpoint(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateRequiredString(issues, 'storage.bucket', config.storage?.bucket)
|
||||
validateRequiredString(issues, 'storage.accessKeyId', config.storage?.accessKeyId)
|
||||
validateSecret(issues, 'storage.secretAccessKey', config.storage?.secretAccessKey, {
|
||||
minLength: 8,
|
||||
})
|
||||
validateRequiredHttpUrl(issues, 'orders.claimBaseUrl', config.orders?.claimBaseUrl)
|
||||
validateSecret(issues, 'admin.sessionSecret', config.admin?.sessionSecret, { minLength: 32 })
|
||||
validateAdminDefaultUsers(issues, config.admin?.defaultUsers)
|
||||
@@ -96,7 +123,9 @@ function validateAdminDefaultUsers(
|
||||
|
||||
users.forEach((user, index) => {
|
||||
validateRequiredString(issues, `admin.defaultUsers[${index}].username`, user?.username)
|
||||
validateSecret(issues, `admin.defaultUsers[${index}].password`, user?.password, { minLength: 8 })
|
||||
validateSecret(issues, `admin.defaultUsers[${index}].password`, user?.password, {
|
||||
minLength: 8,
|
||||
})
|
||||
validateRequiredString(issues, `admin.defaultUsers[${index}].role`, user?.role)
|
||||
})
|
||||
}
|
||||
@@ -171,11 +200,34 @@ function validateRequiredHttpUrl(
|
||||
validateOptionalHttpUrl(issues, configPath, value)
|
||||
}
|
||||
|
||||
function validateOptionalStorageEndpoint(
|
||||
issues: RuntimeConfigValidationIssue[],
|
||||
configPath: string,
|
||||
value: unknown,
|
||||
): void {
|
||||
const text = String(value || '').trim()
|
||||
if (!text) {
|
||||
return
|
||||
}
|
||||
|
||||
if (/^https?:\/\//i.test(text)) {
|
||||
validateOptionalHttpUrl(issues, configPath, text)
|
||||
return
|
||||
}
|
||||
|
||||
if (!/^[a-z0-9.-]+(?::\d{1,5})?$/i.test(text)) {
|
||||
issues.push({
|
||||
path: configPath,
|
||||
message: '必须是 http/https URL 或 host:port',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function requireInteger(
|
||||
issues: RuntimeConfigValidationIssue[],
|
||||
configPath: string,
|
||||
value: unknown,
|
||||
{ min, max }: { min?: number, max?: number } = {},
|
||||
{ min, max }: { min?: number; max?: number } = {},
|
||||
): void {
|
||||
const numberValue = Number(value)
|
||||
if (!Number.isInteger(numberValue)) {
|
||||
|
||||
Reference in New Issue
Block a user