import { ZitadelProject } from './classes.zitadelproject.js'; import { ZitaldelUser } from './classes.zitadeluser.js'; import * as plugins from './plugins.js'; export interface IZitadelContructorOptions { url: string; accessToken: string; } export class ZitaldelClient { private options: IZitadelContructorOptions; public authClient: plugins.zitadel.AuthServiceClient; public userClient: plugins.zitadel.UserServiceClient; public managementClient: plugins.zitadel.ManagementServiceClient; constructor(optionsArg: IZitadelContructorOptions) { this.options = optionsArg; console.log(this.options); this.authClient = plugins.zitadel.createAuthClient( this.options.url, plugins.zitadel.createAccessTokenInterceptor(this.options.accessToken) ); this.userClient = plugins.zitadel.createUserClient( this.options.url, plugins.zitadel.createAccessTokenInterceptor(this.options.accessToken) ); this.managementClient = plugins.zitadel.createManagementClient( this.options.url, plugins.zitadel.createAccessTokenInterceptor(this.options.accessToken) ); } public async listOwnUser() { const response = await this.authClient.getMyUser({}); const zitadelUser = new ZitaldelUser(this, { id: response.user.id, lastLogin: response.lastLogin, username: response.user.userName, }); return zitadelUser; } public async listProjects() { const returnProjects: ZitadelProject[] = []; const response = await this.managementClient.listProjects({}); for (const projectObject of response.result) { returnProjects.push(new ZitadelProject(this, { id: projectObject.id, name: projectObject.name, })); } return returnProjects; } public async listUsers() { const response = await this.userClient.listUsers({}); const returnArray: ZitaldelUser[] = []; for (const userObject of response.result) { returnArray.push(new ZitaldelUser(this, { id: userObject.userId, username: userObject.username, lastLogin: null, })); } return returnArray; } public async createUser(optionsArg: { email: string; firstName: string; lastName: string; }) { const response = await this.userClient.addHumanUser({ email: { email: optionsArg.email, }, profile: { givenName: optionsArg.firstName, familyName: optionsArg.lastName, } }); console.log(response); } }