Files
D1041231077-webgis/03/auth_register.php
T
2026-06-10 22:26:03 +07:00

70 lines
2.0 KiB
PHP

<?php
/**
* auth_register.php — Daftar Akun Baru
* POST: nama, email, password, role
*/
session_start();
require_once 'koneksi.php';
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => 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();