false, 'message' => 'Hanya POST']); exit; } $nama = trim($_POST['nama'] ?? ''); $email = trim($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $role = $_POST['role'] ?? 'viewer'; // Validasi if (empty($nama)) { echo json_encode(['success' => false, 'message' => 'Nama wajib diisi']); exit; } if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) { echo json_encode(['success' => false, 'message' => 'Email tidak valid']); exit; } if (strlen($password) < 6) { echo json_encode(['success' => false, 'message' => 'Password minimal 6 karakter']); exit; } // Validasi role (admin tidak boleh daftar sendiri) if (!in_array($role, ['surveyer', 'viewer'])) { echo json_encode(['success' => false, 'message' => 'Pendaftaran untuk role tersebut tidak diizinkan']); exit; } // Cek email sudah terdaftar $stmt = $conn->prepare("SELECT id FROM users WHERE email = ?"); $stmt->bind_param("s", $email); $stmt->execute(); if ($stmt->get_result()->num_rows > 0) { echo json_encode(['success' => false, 'message' => 'Email sudah terdaftar']); $stmt->close(); $conn->close(); exit; } $stmt->close(); // Hash password & simpan $hashed = password_hash($password, PASSWORD_DEFAULT); $stmt = $conn->prepare("INSERT INTO users (nama, email, password, role) VALUES (?, ?, ?, ?)"); $stmt->bind_param("ssss", $nama, $email, $hashed, $role); if ($stmt->execute()) { $userId = $conn->insert_id; // Jangan auto-login. Menunggu verifikasi admin. echo json_encode([ 'success' => true, 'message' => 'Registrasi berhasil! Akun Anda sedang menunggu verifikasi dari Admin.' ]); } else { echo json_encode(['success' => false, 'message' => 'Gagal menyimpan: ' . $conn->error]); } $stmt->close(); $conn->close();