70 lines
2.0 KiB
PHP
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();
|