refactor: separate init user to utils
This commit is contained in:
parent
fe365d31b8
commit
25a20c4ad2
2 changed files with 53 additions and 49 deletions
51
src/app.ts
51
src/app.ts
|
|
@ -6,9 +6,8 @@ import swaggerDocument from "./swagger.json";
|
||||||
import error from "./middlewares/error";
|
import error from "./middlewares/error";
|
||||||
import morgan from "./middlewares/morgan";
|
import morgan from "./middlewares/morgan";
|
||||||
import { RegisterRoutes } from "./routes";
|
import { RegisterRoutes } from "./routes";
|
||||||
import { addUserRoles, createUser, getRoleByName, listUser } from "./services/keycloak";
|
|
||||||
import prisma from "./db";
|
|
||||||
import { initThailandAreaDatabase } from "./utils/thailand-area";
|
import { initThailandAreaDatabase } from "./utils/thailand-area";
|
||||||
|
import { initFirstAdmin } from "./utils/database";
|
||||||
|
|
||||||
const APP_HOST = process.env.APP_HOST || "0.0.0.0";
|
const APP_HOST = process.env.APP_HOST || "0.0.0.0";
|
||||||
const APP_PORT = +(process.env.APP_PORT || 3000);
|
const APP_PORT = +(process.env.APP_PORT || 3000);
|
||||||
|
|
@ -17,53 +16,7 @@ const APP_PORT = +(process.env.APP_PORT || 3000);
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
await initThailandAreaDatabase();
|
await initThailandAreaDatabase();
|
||||||
|
await 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(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalSend = app.response.json;
|
const originalSend = app.response.json;
|
||||||
|
|
||||||
|
|
|
||||||
51
src/utils/database.ts
Normal file
51
src/utils/database.ts
Normal 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(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue