import prisma from "../db"; import { addUserRoles, createUser, getRoleByName, listUser } from "../services/keycloak"; export async function initFirstAdmin() { let users = await (async () => { let list = await listUser(); while (!list) { list = await listUser(); await new Promise((resolve) => setTimeout(resolve, 1000)); } return list; })(); if (users.length === 0) { const role = await getRoleByName("system"); const userId = await createUser("admin", "1234", { firstName: "Admin", lastName: "System", email: "admin@jws.local", requiredActions: ["UPDATE_PASSWORD"], enabled: true, }); if (!userId || typeof userId !== "string") { throw new Error("Error create user with keycloak service."); } if (role) await addUserRoles(userId, [role]); await prisma.user.create({ data: { id: userId, email: "admin@jws.local", gender: "", address: "", addressEN: "", userType: "USER", userRole: "system", telephoneNo: "", firstName: "Admin", firstNameEN: "Admin", lastName: "System", lastNameEN: "System", statusOrder: 0, username: "admin", citizenId: "", citizenIssue: new Date(), }, }); } }