refactor: separate init user to utils

This commit is contained in:
Methapon Metanipat 2024-10-24 11:42:16 +07:00
parent fe365d31b8
commit 25a20c4ad2
2 changed files with 53 additions and 49 deletions

51
src/utils/database.ts Normal file
View file

@ -0,0 +1,51 @@
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(),
},
});
}
}