40 lines
1.7 KiB
JavaScript
40 lines
1.7 KiB
JavaScript
// ==========================================
|
|
// BAGIAN DIUBAH: Bungkus dengan module.exports dan hapus process.exit()
|
|
// ==========================================
|
|
const bcrypt = require('bcrypt');
|
|
const db = require('../config/database');
|
|
|
|
// 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 = 'password';
|
|
|
|
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);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Ekspor fungsi agar bisa dipanggil oleh seed_manajer.js secara rapi
|
|
module.exports = buat_akun_admin_seeder; |