generated from MuhammadIqbalMaulana/UAS-SIG
Initial commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
const bcrypt = require('bcrypt');
|
||||
|
||||
/**
|
||||
* Menyuntikkan akun petugas lapangan secara aman dengan pencegahan duplikasi data
|
||||
* @param {object} db - Instansi koneksi SQLite
|
||||
*/
|
||||
async function buat_akun_petugas_seeder(db) {
|
||||
const username_petugas = 'petugas_lapangan';
|
||||
const password_murni = 'password';
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
// Praktik Keamanan: Memeriksa eksistensi username guna menghindari kegagalan SQLITE_CONSTRAINT
|
||||
db.get("SELECT COUNT(*) as hitung FROM PETUGAS WHERE username = ?", [username_petugas], async (err, row) => {
|
||||
if (err) return reject(err);
|
||||
|
||||
if (row.hitung > 0) {
|
||||
console.log(`Seeder Petugas: Akun '${username_petugas}' sudah aman tersedia.`);
|
||||
return resolve();
|
||||
}
|
||||
|
||||
try {
|
||||
const salt_rounds = 10;
|
||||
const password_terhash = await bcrypt.hash(password_murni, salt_rounds);
|
||||
const kueri_insert = `INSERT INTO PETUGAS (username, password) VALUES (?, ?)`;
|
||||
|
||||
db.run(kueri_insert, [username_petugas, password_terhash], function(error_sql) {
|
||||
if (error_sql) return reject(error_sql);
|
||||
console.log(`Seeder: Akun petugas '${username_petugas}' berhasil diinisialisasi.`);
|
||||
resolve();
|
||||
});
|
||||
} catch (error_sistem) {
|
||||
reject(error_sistem);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = buat_akun_petugas_seeder;
|
||||
Reference in New Issue
Block a user