Perbarui Akun
Demi keamanan akun, silakan buat username dan password baru.
Username minimal 6 karakter dan password minimal
8 karakter.
20) {
sweetAlert(
"Username maksimal 20 karakter",
"error"
);
// =====================================================
// VALIDASI PASSWORD
// =====================================================
} elseif ($passwordBaru === '') {
sweetAlert(
"Password baru harus diisi",
"error"
);
} elseif (strlen($passwordBaru) < 8) {
sweetAlert(
"Password minimal 8 karakter",
"error"
);
} elseif ($passwordBaru !== $konfirmasiPassword) {
sweetAlert(
"Konfirmasi password tidak sama",
"error"
);
} else {
try {
// =====================================================
// CEK USERNAME DI DATA_SERVER
// =====================================================
if ($tipeUser === 'master') {
$stmt = $pdo->prepare("
SELECT id
FROM data_server
WHERE (
username = :username
OR email = :username
)
AND id != :id
LIMIT 1
");
} else {
/*
* Untuk user_akses, tetap cek data_server juga.
*
* Hal ini penting karena proses login selalu
* mencari data_server terlebih dahulu.
*/
$stmt = $pdo->prepare("
SELECT id
FROM data_server
WHERE username = :username
OR email = :username
LIMIT 1
");
}
$stmt->execute([
':username' => $usernameBaru,
...($tipeUser === 'master' ? [':id' => $idUser] : [])
]);
$usernameDiMaster = $stmt->fetch(PDO::FETCH_ASSOC);
if ($usernameDiMaster) {
sweetAlert(
"Username sudah digunakan. Silakan gunakan username lain.",
"error"
);
} else {
// =====================================================
// CEK USERNAME DI USER_AKSES
// =====================================================
if ($tipeUser === 'user') {
$stmt = $pdo->prepare("
SELECT id
FROM user_akses
WHERE (
username = :username
OR email = :username
)
AND id != :id
LIMIT 1
");
$stmt->execute([
':username' => $usernameBaru,
':id' => $idUser
]);
} else {
$stmt = $pdo->prepare("
SELECT id
FROM user_akses
WHERE username = :username
OR email = :username
LIMIT 1
");
$stmt->execute([
':username' => $usernameBaru
]);
}
$usernameDiUser = $stmt->fetch(PDO::FETCH_ASSOC);
if ($usernameDiUser) {
sweetAlert(
"Username sudah digunakan. Silakan gunakan username lain.",
"error"
);
} else {
// =====================================================
// HASH PASSWORD BARU
// =====================================================
$passwordHash = password_hash(
$passwordBaru,
PASSWORD_DEFAULT
);
if ($passwordHash === false) {
throw new Exception(
"Gagal membuat hash password"
);
}
// =====================================================
// UPDATE DATABASE
// =====================================================
if ($tipeUser === 'master') {
$stmtUpdate = $pdo->prepare("
UPDATE data_server
SET
username = :username,
password = :password
WHERE id = :id
");
} else {
$stmtUpdate = $pdo->prepare("
UPDATE user_akses
SET
username = :username,
password = :password
WHERE id = :id
AND status = 'active'
");
}
$stmtUpdate->execute([
':username' => $usernameBaru,
':password' => $passwordHash,
':id' => $idUser
]);
// =====================================================
// BERSIHKAN SESSION SEMENTARA
// =====================================================
unset($_SESSION['wajib_update_akun']);
unset($_SESSION['update_akun_id']);
unset($_SESSION['update_akun_tipe']);
// =====================================================
// BUAT SESSION LOGIN NORMAL
// =====================================================
session_regenerate_id(true);
if ($tipeUser === 'master') {
$_SESSION['master'] = $idUser;
} else {
$_SESSION['user'] = $idUser;
}
// =====================================================
// BERHASIL
// =====================================================
sweetAlert(
"Username dan Password berhasil diperbarui",
"success",
baseurl()
);
}
}
} catch (PDOException $e) {
sweetAlert(
"Gagal memperbarui akun. Terjadi kesalahan pada sistem.",
"error"
);
// Debugging:
// error_log($e->getMessage());
} catch (Exception $e) {
sweetAlert(
"Gagal memperbarui akun",
"error"
);
// error_log($e->getMessage());
}
}
}
?>