feat : fix bug database(2)

This commit is contained in:
unknown
2026-06-09 13:15:01 +07:00
parent 9726ebc2d2
commit 810f183619
2 changed files with 34 additions and 28 deletions
+30 -22
View File
@@ -1,32 +1,40 @@
// ==========================================
// BAGIAN DIUBAH: Bungkus dengan module.exports dan hapus process.exit()
// ==========================================
const bcrypt = require('bcrypt');
const db = require('../config/database');
// Menggenerasikan data akun administrator baru dengan pengacakan kata sandi aman
// Mengubah kata sandi murni menjadi 'password' sesuai instruksi nomor 8 dari dosen
async function buat_akun_admin_seeder() {
const username_admin = 'admin_dinsos';
const password_murni = 'adminrahasia';
const password_murni = 'password';
try {
// Baris kompleks: Kita menerapkan metode saltRounds sebesar 10 untuk menghasilkan nilai salt unik menggunakan bcrypt. Fungsi ini mengacak kata sandi murni menjadi string hash tak terbaca sebelum disimpan ke SQLite untuk mengantisipasi kebocoran database.
const salt_rounds = 10;
const password_terhash = await bcrypt.hash(password_murni, salt_rounds);
const kueri_insert = `INSERT INTO ADMIN (username, password) VALUES (?, ?)`;
db.run(kueri_insert, [username_admin, password_terhash], function(error_sql) {
if (error_sql) {
console.error('Gagal menyisipkan akun admin:', error_sql.message);
process.exit(1);
return new Promise((resolve, reject) => {
db.get("SELECT COUNT(*) as hitung FROM ADMIN WHERE username = ?", [username_admin], async (err, row) => {
if (err) return reject(err);
// Jika akun sudah ada di file SQLite, lewati agar tidak memicu error UNIQUE constraint
if (row.hitung > 0) {
console.log('Seeder Admin: Akun sudah terdaftar.');
return resolve();
}
try {
const salt_rounds = 10;
const password_terhash = await bcrypt.hash(password_murni, salt_rounds);
const kueri_insert = `INSERT INTO ADMIN (username, password) VALUES (?, ?)`;
db.run(kueri_insert, [username_admin, password_terhash], function(error_sql) {
if (error_sql) return reject(error_sql);
console.log(`Akun admin berhasil dibuat! Username: ${username_admin}`);
resolve();
});
} catch (error_sistem) {
reject(error_sistem);
}
console.log(`Akun admin berhasil dibuat! Username: ${username_admin}`);
process.exit(0);
});
} catch (error_sistem) {
console.error('Terjadi kegagalan enkripsi internal:', error_sistem.message);
process.exit(1);
}
});
}
// Menjalankan fungsi seeder otomatis saat berkas dieksekusi di terminal
buat_akun_admin_seeder();
// Ekspor fungsi agar bisa dipanggil oleh seed_manajer.js secara rapi
module.exports = buat_akun_admin_seeder;