Files
kashilo/js/services/verification.js

50 lines
1.3 KiB
JavaScript

import { directus } from './directus.js'
const CODE_VALIDITY_MS = 10 * 60 * 1000
class VerificationService {
generateCode() {
const array = new Uint32Array(1)
crypto.getRandomValues(array)
const code = String(array[0] % 1000000).padStart(6, '0')
const generatedAt = new Date()
const expiresAt = new Date(generatedAt.getTime() + CODE_VALIDITY_MS)
return { code, generatedAt, expiresAt }
}
isCodeValid(generatedAt) {
return Date.now() - new Date(generatedAt).getTime() < CODE_VALIDITY_MS
}
getRemainingTime(generatedAt) {
const elapsed = Date.now() - new Date(generatedAt).getTime()
const remaining = Math.max(0, CODE_VALIDITY_MS - elapsed)
return Math.ceil(remaining / 1000)
}
async verify(listingId, code, imageFile) {
try {
const uploaded = await directus.uploadFile(imageFile)
await directus.patch('/items/listings/' + listingId, {
verification_code: code,
verification_image: uploaded.id,
verification_date: new Date().toISOString(),
verified: true
})
return true
} catch (e) {
console.error('Verification failed:', e)
return false
}
}
isVerified(listing) {
return listing.verified === true
}
}
export const verificationService = new VerificationService()