新增資料庫架構

This commit is contained in:
2025-07-19 02:12:37 +08:00
parent e3832acfa8
commit 924f03c3d7
45 changed files with 12858 additions and 324 deletions

60
lib/email-validation.ts Normal file
View File

@@ -0,0 +1,60 @@
// Email 驗證工具
export function isValidEmail(email: string): boolean {
if (!email) return true // 空值是允許的(可選欄位)
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
return emailRegex.test(email)
}
export function sanitizeEmail(email: string): string {
return email.trim().toLowerCase()
}
export function getEmailDomain(email: string): string {
const parts = email.split("@")
return parts.length > 1 ? parts[1] : ""
}
// 檢查是否為常見的臨時郵箱服務
const temporaryEmailDomains = [
"10minutemail.com",
"guerrillamail.com",
"mailinator.com",
"tempmail.org",
"throwaway.email",
]
export function isTemporaryEmail(email: string): boolean {
if (!email) return false
const domain = getEmailDomain(email)
return temporaryEmailDomains.includes(domain)
}
export function validateEmailForSubmission(email: string): {
isValid: boolean
message?: string
suggestion?: string
} {
if (!email) {
return { isValid: true } // 空值允許
}
if (!isValidEmail(email)) {
return {
isValid: false,
message: "請輸入有效的 Email 格式",
suggestion: "例如your.name@company.com",
}
}
if (isTemporaryEmail(email)) {
return {
isValid: false,
message: "請避免使用臨時郵箱服務",
suggestion: "建議使用常用的 Email 地址,以便我們能夠聯繫到你",
}
}
return { isValid: true }
}