Files
multiverse/jumpa-iam/seed_pkx_users.js
T

66 lines
2.7 KiB
JavaScript

// [TSM.ID].[11031972] — All Rights Reserved. Proprietary & Confidential.
const { drizzle } = require('drizzle-orm/postgres-js');
const { sql } = require('drizzle-orm');
const postgres = require('postgres');
const bcrypt = require('bcryptjs');
// Koneksi ke Database PostgreSQL
// Di eksekusi di environment VPS Alpha (127.0.0.1) atau dengan SSH Tunnel
const connectionString = process.env.DATABASE_URL || 'postgresql://jumpa_admin:JumpaS3cur3%21%40%23@127.0.0.1:5432/jumpadb';
const queryClient = postgres(connectionString, { max: 1 });
const db = drizzle(queryClient);
async function seed() {
console.log('[PKX] Memulai proses injeksi user sesuai PANCA KONSTITUSI X...');
// Hash password standar untuk injeksi awal
const defaultPassword = 'password123';
const salt = bcrypt.genSaltSync(10);
const passwordHash = bcrypt.hashSync(defaultPassword, salt);
const tenantTsmId = '1aba6195-f726-4f27-8c20-e309bdf1e754';
const tenantVpiId = '374c5b80-82a6-46e9-91ef-df29e4c3ef26';
const users = [
// Tenant: TSM.ID (2 User)
{ id: '10000000-0000-0000-0000-000000000001', tenantId: tenantTsmId, email: 'tsm@pc24.id', role: 'tenant_admin' },
{ id: '10000000-0000-0000-0000-000000000002', tenantId: tenantTsmId, email: 'idm@idm.me', role: 'user' },
// Tenant: VPI TSM (4 User)
{ id: '20000000-0000-0000-0000-000000000001', tenantId: tenantVpiId, email: 'sofi@pc24.id', role: 'tenant_admin' },
{ id: '20000000-0000-0000-0000-000000000002', tenantId: tenantVpiId, email: 'keanu@pc24.id', role: 'user' },
{ id: '20000000-0000-0000-0000-000000000003', tenantId: tenantVpiId, email: 'dede@pc24.id', role: 'user' },
{ id: '20000000-0000-0000-0000-000000000004', tenantId: tenantVpiId, email: 'aya@pc24.id', role: 'user' }
];
let successCount = 0;
for (const u of users) {
try {
await db.execute(sql`
INSERT INTO users (id, tenant_id, email, password_hash, role)
VALUES (${u.id}, ${u.tenantId}, ${u.email}, ${passwordHash}, ${u.role})
ON CONFLICT (email) DO UPDATE SET
tenant_id = ${u.tenantId},
role = ${u.role},
password_hash = ${passwordHash}
`);
console.log(`[OK] User ${u.email} (${u.role}) berhasil diinjeksi ke Tenant ${u.tenantId}.`);
successCount++;
} catch (err) {
console.error(`[ERROR] Gagal injeksi user ${u.email}:`, err.message);
}
}
console.log(`\n[PKX] Proses Selesai. Total sukses: ${successCount}/${users.length}`);
console.log(`[INFO] Semua user menggunakan password default: '${defaultPassword}'`);
await queryClient.end();
process.exit(0);
}
seed().catch((err) => {
console.error('[FATAL] Kesalahan sistem saat seeding:', err);
process.exit(1);
});