Files
airz-uniapp/services/assistant-return.uts
T

12 lines
1.0 KiB
Plaintext

// 登录返回只允许助手路由与编号;拒绝任意returnUrl,重新登录后仍由服务端校验归属。
export function assistantReturnPath(assessmentId: string, productIds: string, chatId: string, from: string): string {
const valid = (id: string): boolean => /^[1-9][0-9]{0,9}$/.test(id)
if ((assessmentId.length > 0 && !valid(assessmentId)) || (chatId.length > 0 && !valid(chatId))) return ''
const ids = productIds.length == 0 ? [] as string[] : productIds.split(',')
if (ids.length > 3 || (ids.length > 0 && assessmentId.length == 0)) return ''
const seen: string[] = []
for (let i = 0; i < ids.length; i++) { if (!valid(ids[i]) || seen.includes(ids[i])) return ''; seen.push(ids[i]) }
if (!['','matches','product','compare','report','next-step','archive'].includes(from)) return ''
return '/packages/finance/assistant/assistant?from=' + from + (assessmentId.length > 0 ? '&assessmentId=' + assessmentId + '&productIds=' + productIds : '') + (chatId.length > 0 ? '&chatId=' + chatId : '')
}