|
|
<!doctype html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="utf-8" /> |
|
|
<meta name="viewport" content="width=device-width,initial-scale=1" /> |
|
|
<title>EMMYS Gate</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<script defer src="https://unpkg.com/lucide@latest"></script> |
|
|
<style> |
|
|
body{ |
|
|
min-height:100vh;color:#fff; |
|
|
background: |
|
|
linear-gradient(rgba(0,0,0,.68),rgba(0,0,0,.68)), |
|
|
url('https://i.pinimg.com/736x/bd/3a/aa/bd3aaa3a2553c8a645472da61fa2a5cc.jpg') center/cover fixed no-repeat; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="flex items-center justify-center p-6"> |
|
|
<div class="w-full max-w-xl rounded-2xl border border-yellow-200/20 bg-black/50 p-6 backdrop-blur"> |
|
|
<div class="flex items-center gap-3 mb-4"> |
|
|
<div class="w-9 h-9 rounded-xl bg-gradient-to-br from-yellow-300 via-yellow-500 to-amber-600 flex items-center justify-center shadow-md"> |
|
|
<i data-lucide="sparkles" class="w-5 h-5 text-black"></i> |
|
|
</div> |
|
|
<div> |
|
|
<p class="text-xs uppercase tracking-widest text-yellow-300/80">AI WEEK</p> |
|
|
<h1 class="text-2xl font-black text-yellow-200">Emmys Gate</h1> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<form id="gate" class="space-y-4"> |
|
|
<div> |
|
|
<label class="text-sm text-yellow-200">Username</label> |
|
|
<input id="name" required class="mt-1 w-full rounded-lg border border-yellow-200/20 bg-black/40 p-2 outline-none focus:ring-2 focus:ring-yellow-400" placeholder="e.g., robert_downey" /> |
|
|
</div> |
|
|
<div> |
|
|
<label class="text-sm text-yellow-200">Face Image</label> |
|
|
<input id="image" type="file" accept="image/*" required class="mt-1 w-full text-yellow-100" /> |
|
|
</div> |
|
|
<button id="go" class="px-4 py-2 rounded-xl bg-yellow-400 text-black font-semibold flex items-center gap-2"> |
|
|
<i data-lucide="shield-check" class="w-4 h-4"></i> Verify & Enter |
|
|
</button> |
|
|
<div id="msg" class="text-sm mt-2"></div> |
|
|
</form> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
lucide.createIcons(); |
|
|
|
|
|
const VERIFY_URL = "https://hudaakram-emmys-api.hf.space/verify"; |
|
|
const EMMYS_URL = "./index.html"; |
|
|
|
|
|
document.getElementById('gate').addEventListener('submit', async (e)=>{ |
|
|
e.preventDefault(); |
|
|
const btn = document.getElementById('go'); |
|
|
const msg = document.getElementById('msg'); |
|
|
msg.textContent = ""; btn.disabled = true; btn.style.opacity = .6; |
|
|
|
|
|
const name = document.getElementById('name').value.trim(); |
|
|
const file = document.getElementById('image').files[0]; |
|
|
if(!name || !file){ |
|
|
msg.textContent = "Please provide username and image."; |
|
|
btn.disabled=false; btn.style.opacity=1; return; |
|
|
} |
|
|
|
|
|
if (!VERIFY_URL || VERIFY_URL.includes("YOUR-BACKEND") || !VERIFY_URL.includes("hf.space")) { |
|
|
const score = 0.951; |
|
|
location.href = `${EMMYS_URL}?user=${encodeURIComponent(name)}&score=${score.toFixed(3)}`; |
|
|
return; |
|
|
} |
|
|
|
|
|
const fd = new FormData(); |
|
|
fd.append('name', name); |
|
|
fd.append('image', file, file.name); |
|
|
|
|
|
try{ |
|
|
const r = await fetch(VERIFY_URL, { method:'POST', body: fd, mode:'cors' }); |
|
|
const out = await r.json(); |
|
|
if(out.decision === "Access Granted"){ |
|
|
const score = Number(out.score || 0).toFixed(3); |
|
|
const token = out.token ? `&token=${encodeURIComponent(out.token)}` : ""; |
|
|
window.location.href = `${EMMYS_URL}?user=${encodeURIComponent(name)}&score=${score}${token}`; |
|
|
}else{ |
|
|
msg.textContent = `⛔ ${out.decision || "Denied"} — score=${Number(out.score||0).toFixed(3)}`; |
|
|
msg.style.color = "#fca5a5"; |
|
|
} |
|
|
}catch(err){ |
|
|
msg.textContent = `Error: ${err}`; |
|
|
msg.style.color = "#fca5a5"; |
|
|
}finally{ |
|
|
btn.disabled = false; btn.style.opacity = 1; |
|
|
} |
|
|
}); |
|
|
</script> |
|
|
|
|
|
</body> |
|
|
</html> |
|
|
|