Files
WebGIS_Project/05/login.php
T

111 lines
6.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Login WebGIS Kemiskinan UAS 06</title>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"/>
<style>
:root{--bg:#0d1117;--surface:#161b22;--card:#1c2230;--border:#30363d;--text:#e6edf3;--muted:#8b949e;--accent:#58a6ff;--red:#f85149;--green:#3fb950}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Plus Jakarta Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.wrap{width:100%;max-width:900px;display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:16px;overflow:hidden;box-shadow:0 8px 48px rgba(0,0,0,.7);border:1px solid var(--border)}
.left{background:linear-gradient(135deg,#0d1117 0%,#1a2332 100%);padding:48px 40px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.left::before{content:'';position:absolute;top:-60px;right:-60px;width:240px;height:240px;background:rgba(88,166,255,.06);border-radius:50%}
.left::after{content:'';position:absolute;bottom:-40px;left:-40px;width:180px;height:180px;background:rgba(63,185,80,.05);border-radius:50%}
.left-ico{font-size:40px;margin-bottom:20px;display:block}
.left h1{font-size:26px;font-weight:800;letter-spacing:-0.5px;margin-bottom:10px;line-height:1.2}
.left p{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:28px}
.feat{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px;color:var(--muted)}
.feat i{color:var(--accent);width:16px}
.right{background:var(--surface);padding:48px 40px}
.right h2{font-size:20px;font-weight:800;margin-bottom:6px}
.right .sub{font-size:12px;color:var(--muted);margin-bottom:28px}
.fg{margin-bottom:16px}
.fg label{font-size:11px;font-weight:700;color:var(--muted);display:block;margin-bottom:5px;text-transform:uppercase;letter-spacing:.4px}
.fg input{width:100%;background:var(--card);border:1px solid var(--border);color:var(--text);padding:10px 13px;border-radius:8px;font-size:13px;font-family:inherit;outline:none;transition:border .15s}
.fg input:focus{border-color:var(--accent)}
.btn-login{width:100%;background:var(--accent);color:#0d1117;border:none;padding:11px;border-radius:8px;font-size:14px;font-weight:800;font-family:inherit;cursor:pointer;transition:background .15s;margin-top:4px}
.btn-login:hover{background:#79c0ff}
.btn-login:disabled{opacity:.6;cursor:not-allowed}
.err{background:rgba(248,81,73,.08);border:1px solid rgba(248,81,73,.25);border-radius:7px;padding:9px 12px;font-size:12px;color:var(--red);margin-bottom:14px;display:none;align-items:center;gap:7px}
.demo-box{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px;margin-top:20px}
.demo-box strong{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:10px}
.demo-row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--border);font-size:12px}
.demo-row:last-child{border:none}
.demo-row .role{color:var(--muted);font-size:11px}
.demo-row .creds{font-size:11px;color:var(--accent);cursor:pointer}
.demo-row .creds:hover{text-decoration:underline}
@media(max-width:650px){.wrap{grid-template-columns:1fr}.left{display:none}}
</style>
</head>
<body>
<div class="wrap">
<div class="left">
<span class="left-ico">🗺️</span>
<h1>WebGIS Pengentasan Kemiskinan</h1>
<p>Sistem informasi geografis berbasis masyarakat untuk monitoring dan pengentasan kemiskinan yang terintegrasi dengan rumah ibadah.</p>
<div class="feat"><i class="fas fa-map-marked-alt"></i> Peta sebaran penduduk real-time</div>
<div class="feat"><i class="fas fa-gift"></i> Manajemen bantuan sosial</div>
<div class="feat"><i class="fas fa-flag"></i> Sistem laporan masyarakat</div>
<div class="feat"><i class="fas fa-chart-bar"></i> Dashboard statistik kemiskinan</div>
<div class="feat"><i class="fas fa-comments"></i> Komunikasi antar pengurus</div>
<div class="feat"><i class="fas fa-user-shield"></i> Sistem multi-role & autentikasi</div>
</div>
<div class="right">
<h2>Masuk ke Sistem</h2>
<p class="sub">Silakan login dengan akun yang telah terdaftar</p>
<div class="err" id="err"><i class="fas fa-exclamation-circle"></i><span id="err-txt"></span></div>
<form onsubmit="doLogin(event)">
<div class="fg"><label>Email</label><input type="email" id="email" placeholder="email@domain.com" required autofocus></div>
<div class="fg"><label>Password</label><input type="password" id="pass" placeholder="••••••••" required></div>
<button type="submit" class="btn-login" id="btn-submit"><i class="fas fa-sign-in-alt"></i> Masuk</button>
</form>
<div class="demo-box">
<strong>Akun Demo klik untuk isi otomatis</strong>
<div class="demo-row">
<div><div style="font-weight:700">Admin/Pengurus</div><div class="role">Akses penuh input & verifikasi</div></div>
<span class="creds" onclick="fillDemo('admin@uas.id','password')">Gunakan </span>
</div>
<div class="demo-row">
<div><div style="font-weight:700">Pimpinan Daerah</div><div class="role">Read-only + dashboard</div></div>
<span class="creds" onclick="fillDemo('pimpinan@uas.id','password')">Gunakan </span>
</div>
<div class="demo-row">
<div><div style="font-weight:700">Masyarakat</div><div class="role">Hanya lihat & laporan</div></div>
<span class="creds" onclick="fillDemo('warga@uas.id','password')">Gunakan </span>
</div>
</div>
</div>
</div>
<script>
function fillDemo(e,p){
document.getElementById('email').value=e;
document.getElementById('pass').value=p;
document.getElementById('email').focus();
}
function doLogin(e){
e.preventDefault();
const btn=document.getElementById('btn-submit');
btn.disabled=true; btn.innerHTML='<i class="fas fa-spinner fa-spin"></i> Memverifikasi...';
document.getElementById('err').style.display='none';
const body=new URLSearchParams({aksi:'login',email:document.getElementById('email').value,password:document.getElementById('pass').value});
fetch('auth.php',{method:'POST',body}).then(r=>r.json()).then(d=>{
if(d.login){ window.location.href='index.php'; }
else {
const el=document.getElementById('err');
document.getElementById('err-txt').textContent=d.error||'Login gagal';
el.style.display='flex';
btn.disabled=false; btn.innerHTML='<i class="fas fa-sign-in-alt"></i> Masuk';
}
}).catch(()=>{
document.getElementById('err-txt').textContent='Tidak dapat terhubung ke server';
document.getElementById('err').style.display='flex';
btn.disabled=false; btn.innerHTML='<i class="fas fa-sign-in-alt"></i> Masuk';
});
}
</script>
</body>
</html>