weKup

scadenziario

📋

Benvenuto in weKup

Le tue scadenze sempre sincronizzate su tutti i dispositivi tramite Google Drive.

I tuoi dati vengono salvati nel tuo Google Drive personale. Nessun altro può accedervi.

// ─── PANNELLO ADMIN UTENTI BETA ───────────────────────────────────────────── function openAdminPanel(){ var adminEmail = 'gig.guidagiuseppe@gmail.com'; var userEmail = localStorage.getItem('wekup_user_email')||''; if(userEmail.toLowerCase()!==adminEmail.toLowerCase()){ showToast('Accesso negato'); return; } var existing = document.getElementById('admin-panel'); if(existing){ existing.style.display='block'; loadAdminUsers(); return; } var panel = document.createElement('div'); panel.id = 'admin-panel'; panel.style.cssText = 'position:fixed;inset:0;background:#0f1117;z-index:99998;overflow-y:auto;padding:20px;font-family:-apple-system,sans-serif;color:#e0e0e0'; panel.innerHTML = '
' +'
' +'

👥 Utenti Beta

' +'' +'
' +'
' +'' +'' +'' +'
' +'
' +'
'; document.body.appendChild(panel); loadAdminUsers(); } async function loadAdminUsers(){ var list = document.getElementById('admin-users-list'); if(!list) return; list.innerHTML = '
Caricamento...
'; try{ var resp = await fetch(SUPABASE_URL+'/rest/v1/users?select=*&order=created_at.desc&limit=200',{ headers:{'apikey':SUPABASE_KEY,'Authorization':'Bearer '+SUPABASE_KEY} }); if(!resp.ok){ list.innerHTML='
Errore: '+resp.status+' — verifica la chiave Supabase
'; return; } var users = await resp.json(); if(!users.length){ list.innerHTML='
Nessun utente ancora
'; return; } var html='
'+users.length+' utenti
'; users.forEach(function(u){ var col = u.status==='pro'?'#4caf50':u.status==='trial'?'#ff9800':'#555'; html+='
' +'
'+u.email+'
' +''+u.status+'' +(u.trial_end?'scad: '+u.trial_end.substring(0,10)+'':'') +'' +'
'; }); list.innerHTML=html; }catch(e){ list.innerHTML='
'+e.message+'
'; } } async function adminAddUser(){ var email = document.getElementById('admin-email-input').value.trim().toLowerCase(); var status = document.getElementById('admin-status-sel').value; if(!email||!email.includes('@')){ showToast('Email non valida'); return; } var trialEnd = new Date(); trialEnd.setDate(trialEnd.getDate()+30); var body = {email:email, status:status, trial_end:trialEnd.toISOString().substring(0,10), created_at:new Date().toISOString()}; try{ var resp = await fetch(SUPABASE_URL+'/rest/v1/users',{ method:'POST', headers:{'apikey':SUPABASE_KEY,'Authorization':'Bearer '+SUPABASE_KEY,'Content-Type':'application/json','Prefer':'return=minimal'}, body:JSON.stringify(body) }); if(resp.ok||resp.status===201){ showToast('✅ Utente aggiunto'); document.getElementById('admin-email-input').value=''; loadAdminUsers(); } else{ var e=await resp.json(); showToast('Errore: '+(e.message||resp.status)); } }catch(e){ showToast('Errore: '+e.message); } } async function adminDeleteUser(email){ if(!confirm('Rimuovere '+email+'?')) return; try{ var resp = await fetch(SUPABASE_URL+'/rest/v1/users?email=eq.'+encodeURIComponent(email),{ method:'DELETE', headers:{'apikey':SUPABASE_KEY,'Authorization':'Bearer '+SUPABASE_KEY} }); if(resp.ok){ showToast('Utente rimosso'); loadAdminUsers(); } else showToast('Errore rimozione'); }catch(e){ showToast('Errore: '+e.message); } }