diff --git a/controlplane/src/bin/seed.ts b/controlplane/src/bin/seed.ts index 95a4fff0c8..94a68be2c3 100644 --- a/controlplane/src/bin/seed.ts +++ b/controlplane/src/bin/seed.ts @@ -1,5 +1,6 @@ // See https://github.com/keycloak/keycloak/tree/main/js/libs/keycloak-admin-client +import 'dotenv/config'; import { randomUUID } from 'node:crypto'; import * as process from 'node:process'; import postgres from 'postgres'; @@ -76,19 +77,34 @@ try { exact: true, }); + let keycloakUserID: string; if (users.length > 0) { - console.log('User already exists'); - // eslint-disable-next-line unicorn/no-process-exit - process.exit(0); + keycloakUserID = users[0].id!; + + console.log(`User already exists with id ${keycloakUserID}, email "${user.email}"`); + } else { + keycloakUserID = await keycloakClient.addKeycloakUser({ + realm, + email: user.email, + password: user.password, + isPasswordTemp: false, + }); + + console.log(`User created with id ${keycloakUserID}, email "${user.email}"`); } - const keycloakUserID = await keycloakClient.addKeycloakUser({ + const o = await keycloakClient.client.groups.find({ realm, - email: user.email, - password: user.password, - isPasswordTemp: false, + search: user.organization.slug, + exact: true, }); + if (o.length > 0) { + console.log(`Organization with slug "${user.organization.slug}" already exists`); + // eslint-disable-next-line unicorn/no-process-exit + process.exit(0); + } + const [kcRootGroupId, kcCreatedGroups] = await keycloakClient.seedGroup({ realm, userID: keycloakUserID, @@ -115,9 +131,7 @@ try { timeout: 1, }); - console.log(`User created with id ${keycloakUserID}, email "${user.email}"`); console.log(`API Key: ${apiKey}`); - console.log('Done'); // eslint-disable-next-line unicorn/no-process-exit