import { randomBytes, createHash } from 'crypto'

/**
 * 生成安全的 session ID
 * 使用 crypto.randomBytes 生成隨機字串，類似於參考範例的格式
 * 生成一個長度約 400-500 字元的複雜字串
 */
export function generateSessionId(): string {
    const parts: string[] = []
    for (let i = 0; i < 4; i++) {
        const randomBytesBuffer = randomBytes(64)
        const base64 = randomBytesBuffer.toString('base64')
            .replace(/\+/g, '-')
            .replace(/\//g, '_')
            .replace(/=/g, '')
        parts.push(base64)
    }
    const combined = parts.join('')
    const hash = createHash('sha256')
        .update(combined + Date.now().toString() + Math.random().toString())
        .digest('base64')
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=/g, '')
    return combined + hash
}

/**
 * 生成登入歷史 ID
 */
export function generateLoginHistoryId(): string {
    const randomBytesBuffer = randomBytes(32)
    const base64 = randomBytesBuffer.toString('base64')
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=/g, '')

    return `lh_${base64}`
}

