54 lines
2.0 KiB
PHP
54 lines
2.0 KiB
PHP
<?php
|
|
// register.php
|
|
require_once 'config.php';
|
|
|
|
// Membaca input JSON dari client/frontend
|
|
$input = json_decode(file_get_contents('php://input'), true);
|
|
|
|
$username = trim($input['username'] ?? '');
|
|
$password = trim($input['password'] ?? '');
|
|
$role = trim($input['role'] ?? ''); // 'pengurus_masjid' atau 'dhuafa'
|
|
$masjid_id = !empty($input['masjid_id']) ? intval($input['masjid_id']) : null;
|
|
$dhuafa_id = !empty($input['dhuafa_id']) ? intval($input['dhuafa_id']) : null; // Tambahan Fitur
|
|
|
|
if (empty($username) || empty($password) || empty($role)) {
|
|
sendResponse(false, 'Username, password, dan role wajib diisi.');
|
|
}
|
|
|
|
if (!in_array($role, ['pengurus_masjid', 'dhuafa'])) {
|
|
sendResponse(false, 'Role tidak valid. Hanya bisa mendaftarkan pengurus_masjid atau dhuafa.');
|
|
}
|
|
|
|
// Proteksi Khusus Pengurus Masjid
|
|
if ($role === 'pengurus_masjid' && empty($masjid_id)) {
|
|
sendResponse(false, 'Pendaftaran pengurus masjid wajib menyertakan ID Masjid yang diampu.');
|
|
}
|
|
|
|
// Proteksi Khusus Kaum Dhuafa
|
|
if ($role === 'dhuafa' && empty($dhuafa_id)) {
|
|
sendResponse(false, 'Pendaftaran akun dhuafa wajib ditautkan ke data warga dhuafa yang valid.');
|
|
}
|
|
|
|
// Cek apakah username sudah terpakai
|
|
$check = $conn->prepare("SELECT id FROM users WHERE username = ?");
|
|
$check->bind_param("s", $username);
|
|
$check->execute();
|
|
if ($check->get_result()->num_rows > 0) {
|
|
sendResponse(false, 'Username sudah terdaftar, gunakan nama lain.');
|
|
}
|
|
$check->close();
|
|
|
|
// Enkripsi password dengan standar PHP Bcrypt
|
|
$password_hash = password_hash($password, PASSWORD_DEFAULT);
|
|
|
|
// Daftarkan user ke database dengan menyertakan nilai masjid_id atau dhuafa_id yang sesuai
|
|
$stmt = $conn->prepare("INSERT INTO users (username, password, role, masjid_id, dhuafa_id) VALUES (?, ?, ?, ?, ?)");
|
|
$stmt->bind_param("sssii", $username, $password_hash, $role, $masjid_id, $dhuafa_id);
|
|
|
|
if ($stmt->execute()) {
|
|
sendResponse(true, 'Registrasi akun baru berhasil disimpan.');
|
|
} else {
|
|
sendResponse(false, 'Gagal mendaftarkan akun baru: ' . $conn->error);
|
|
}
|
|
$stmt->close();
|
|
?>
|