6 Commits

Author SHA1 Message Date
26dd8ac6cd 1.0.7 2024-05-03 10:45:22 +02:00
78720a5e50 fix(core): update 2024-05-03 10:45:21 +02:00
19a4c9ef48 1.0.6 2024-05-03 10:39:25 +02:00
02a01ca35c fix(core): update 2024-05-03 10:39:24 +02:00
13fdbcebdc 1.0.5 2024-05-02 17:43:31 +02:00
6246a3d915 fix(core): update 2024-05-02 17:43:31 +02:00
7 changed files with 124 additions and 7 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@apiclient.xyz/zitadel",
"version": "1.0.4",
"version": "1.0.7",
"private": false,
"description": "An unofficial client for interacting with Zitadel API.",
"main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@apiclient.xyz/zitadel',
version: '1.0.4',
version: '1.0.7',
description: 'An unofficial client for interacting with Zitadel API.'
}

View File

@ -1,5 +1,6 @@
import { ZitadelProject } from './classes.zitadelproject.js';
import { ZitaldelUser } from './classes.zitadeluser.js';
import * as plugins from './zitadel.plugins.js';
import * as plugins from './plugins.js';
export interface IZitadelContructorOptions {
url: string;
@ -10,6 +11,7 @@ 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;
@ -22,6 +24,10 @@ export class ZitaldelClient {
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() {
@ -34,6 +40,18 @@ export class ZitaldelClient {
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[] = [];

View File

@ -0,0 +1,33 @@
import type { ZitaldelClient } from './classes.zitadelclient.js';
import { ZitadelProjectRole } from './classes.zitadelprojectrole.js';
import * as plugins from './plugins.js';
export class IZitadelProjectData {
id: string;
name: string;
}
export class ZitadelProject {
ziadelclientRef: ZitaldelClient;
public data: IZitadelProjectData;
constructor(zitadelclientRefArg: ZitaldelClient, dataArg: IZitadelProjectData) {
this.ziadelclientRef = zitadelclientRefArg;
this.data = dataArg;
}
public async listProjectRoles() {
const returnRoles: ZitadelProjectRole[] = [];
const response = await this.ziadelclientRef.managementClient.listProjectRoles({
projectId: this.data.id,
});
for (const roleObject of response.result) {
returnRoles.push(new ZitadelProjectRole(this.ziadelclientRef, {
project: this,
name: roleObject.displayName,
key: roleObject.key,
}));
}
return returnRoles;
}
}

View File

@ -0,0 +1,19 @@
import type { ZitaldelClient } from './classes.zitadelclient.js';
import type { ZitadelProject } from './classes.zitadelproject.js';
import * as plugins from './plugins.js';
export interface IZitadelProjectRoleData {
project: ZitadelProject;
key: string;
name: string;
}
export class ZitadelProjectRole {
ziadelclientRef: ZitaldelClient;
public data: IZitadelProjectRoleData;
constructor(zitadelclientRefArg: ZitaldelClient, dataArg: IZitadelProjectRoleData) {
this.ziadelclientRef = zitadelclientRefArg;
this.data = dataArg;
}
}

View File

@ -1,20 +1,67 @@
import type { ZitaldelClient } from './classes.zitadelclient.js';
import * as plugins from './zitadel.plugins.js';
import type { ZitadelProjectRole } from './classes.zitadelprojectrole.js';
import * as plugins from './plugins.js';
export interface IZitadelUserData {
id: string;
lastLogin: Date;
username: string;
};
}
export class ZitaldelUser {
// INSTANCE
zitadelclientRef: ZitaldelClient;
data: IZitadelUserData;
constructor(zitadelclientRefArg: ZitaldelClient, dataArg: IZitadelUserData) {
this.zitadelclientRef = zitadelclientRefArg;
this.data = dataArg;
}
// INSTANCE
data: IZitadelUserData;
public async addRole(projectRole: ZitadelProjectRole) {
const response = await this.zitadelclientRef.managementClient.addUserGrant({
userId: this.data.id,
roleKeys: [projectRole.data.key],
projectId: projectRole.data.project.data.id,
});
}
/**
* change email address of user,
* optionally supply own url for email verification
* @param emailAddress
* @param verificationUrl
*/
public async changeEmail(optionsArg: { emailAddress: string; verificationUrl?: string }) {
const response = await this.zitadelclientRef.userClient.setEmail({
userId: this.data.id,
email: optionsArg.emailAddress,
...(optionsArg.verificationUrl
? {
sendCode: {
urlTemplate: optionsArg.verificationUrl,
},
}
: {}),
});
}
public async setPassword(optionsArg: { password: string; changeRequired?: boolean }) {
const response = await this.zitadelclientRef.userClient.setPassword({
userId: this.data.id,
newPassword: {
password: optionsArg.password,
...(optionsArg.changeRequired ? { changeRequired: optionsArg.changeRequired } : {}),
},
});
}
/**
* triggers a password reset action for the user
*/
public async resetPassword() {
const response = await this.zitadelclientRef.userClient.passwordReset({
userId: this.data.id,
});
}
}