diff --git a/libs/contract/commands/handler/remove-user.command.ts b/libs/contract/commands/handler/remove-user.command.ts index 9ef4969..c1986d2 100644 --- a/libs/contract/commands/handler/remove-user.command.ts +++ b/libs/contract/commands/handler/remove-user.command.ts @@ -5,7 +5,7 @@ export namespace RemoveUserCommand { export const url = REST_API.HANDLER.REMOVE_USER; export const RequestSchema = z.object({ - tag: z.string(), + tags: z.array(z.string()), username: z.string(), }); diff --git a/libs/contract/package.json b/libs/contract/package.json index 367f684..de8ae11 100644 --- a/libs/contract/package.json +++ b/libs/contract/package.json @@ -1,6 +1,6 @@ { "name": "@remnawave/node-contract", - "version": "0.2.6", + "version": "0.2.7", "description": "A node-contract library for Remnawave Panel", "main": "build/index.js", "types": "build/index.d.ts", diff --git a/package.json b/package.json index 1e5f4cd..8d62269 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remnawave-node", - "version": "0.2.6", + "version": "0.2.7", "description": "", "author": "", "private": true, diff --git a/src/modules/handler/handler.service.ts b/src/modules/handler/handler.service.ts index f5a5d32..f785363 100644 --- a/src/modules/handler/handler.service.ts +++ b/src/modules/handler/handler.service.ts @@ -3,12 +3,12 @@ import { InjectXtls } from '@remnawave/xtls-sdk-nestjs'; import { ICommandResponse } from '../../common/types/command-response.type'; import { ERRORS } from '@libs/contracts/constants/errors'; import { TAddUserRequest } from './interfaces'; -import { AddUserResponseModel } from './models'; +import { AddUserResponseModel, RemoveUserResponseModel } from './models'; import { AddUserResponseModel as AddUserResponseModelFromSdk } from '@remnawave/xtls-sdk/build/src/handler/models/add-user/add-user.response.model'; import { GetInboundUsersResponseModel } from './models'; import { XtlsApi } from '@remnawave/xtls-sdk'; import { IRemoveUserRequest } from './interfaces'; -import { RemoveUserResponseModel } from './models'; +import { RemoveUserResponseModel as RemoveUserResponseModelFromSdk } from '@remnawave/xtls-sdk/build/src/handler/models/remove-user/remove-user.response.model'; import { GetInboundUsersCountResponseModel } from './models'; import { ISdkResponse } from '@remnawave/xtls-sdk/build/src/common/types'; @@ -150,13 +150,21 @@ export class HandlerService { data: IRemoveUserRequest, ): Promise> { try { - const { username, tag } = data; - const response = await this.xtlsApi.handler.removeUser(tag, username); + const { username, tags } = data; + const response: Array> = []; + for (const tag of tags) { + const tempRes = await this.xtlsApi.handler.removeUser(tag, username); + response.push(tempRes); + } - if (!response.isOk || !response.data?.isDeleted) { + if (response.every((res) => !res.isOk)) { + this.logger.error(JSON.stringify(response, null, 2)); return { isOk: true, - response: new RemoveUserResponseModel(false, response.message ?? null), + response: new RemoveUserResponseModel( + false, + response.find((res) => !res.isOk)?.message ?? null, + ), }; } @@ -164,7 +172,7 @@ export class HandlerService { isOk: true, response: new RemoveUserResponseModel(true, null), }; - } catch (error) { + } catch (error: unknown) { this.logger.error(error); let message = ''; if (error instanceof Error) { diff --git a/src/modules/handler/interfaces/remove-user.interface.ts b/src/modules/handler/interfaces/remove-user.interface.ts index 91f3704..85fffba 100644 --- a/src/modules/handler/interfaces/remove-user.interface.ts +++ b/src/modules/handler/interfaces/remove-user.interface.ts @@ -1,4 +1,4 @@ export interface IRemoveUserRequest { - tag: string; + tags: string[]; username: string; }