import { ZitadelServer, ZitadelServerOptions, user, settings, getServers, initializeServer, session, } from "@zitadel/server"; export const zitadelConfig: ZitadelServerOptions = { name: "zitadel login", apiUrl: process.env.ZITADEL_API_URL ?? "", token: process.env.ZITADEL_SERVICE_USER_TOKEN ?? "", }; let server: ZitadelServer; if (!getServers().length) { console.log("initialize server"); server = initializeServer(zitadelConfig); } export function getBrandingSettings( server: ZitadelServer ): Promise { // settings.branding_settings.BrandingSettings const settingsService = settings.getSettings(server); return settingsService .getBrandingSettings( {}, { // metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } ) .then((resp) => resp.settings); } export function getGeneralSettings( server: ZitadelServer ): Promise { // settings.branding_settings.BrandingSettings const settingsService = settings.getSettings(server); return settingsService .getGeneralSettings( {}, { // metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } ) .then((resp) => resp.supportedLanguages); } export function getLegalAndSupportSettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); return settingsService .getLegalAndSupportSettings( {}, { // metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } ) .then((resp) => resp.settings); } export function getPasswordComplexitySettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); return settingsService .getPasswordComplexitySettings( {}, { // metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } ) .then((resp) => resp.settings); } export function createSession( server: ZitadelServer, loginName: string ): Promise { const sessionService = session.getSession(server); return sessionService.createSession({ checks: { user: { loginName } } }, {}); } export function setSession( server: ZitadelServer, sessionId: string, sessionToken: string, password: string ): Promise { const sessionService = session.getSession(server); return sessionService.setSession( { sessionId, sessionToken, checks: { password: { password } } }, {} ); } export function getSession( server: ZitadelServer, sessionId: string, sessionToken: string ): Promise { const sessionService = session.getSession(server); return sessionService.getSession({ sessionId, sessionToken }, {}); } export function listSessions( server: ZitadelServer, ids: string[] ): Promise { const sessionService = session.getSession(server); const query = { offset: 0, limit: 100, asc: true }; console.log(ids); const queries = [{ idsQuery: { ids } }]; return sessionService.listSessions({ queries: queries }, {}); } export type AddHumanUserData = { firstName: string; lastName: string; email: string; password: string; }; export function addHumanUser( server: ZitadelServer, { email, firstName, lastName, password }: AddHumanUserData ): Promise { const mgmt = user.getUser(server); return mgmt .addHumanUser( { email: { email }, username: email, profile: { firstName, lastName }, password: { password }, }, { // metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } ) .then((resp) => { console.log("added user", resp.userId); return resp.userId; }); } export function verifyEmail( server: ZitadelServer, userId: string, verificationCode: string ): Promise { const mgmt = user.getUser(server); return mgmt.verifyEmail( { userId, verificationCode, }, {} ); } export { server };