From e3816791658b8d79747310615affcbb7dbc3454c Mon Sep 17 00:00:00 2001 From: nav Date: Tue, 12 May 2026 08:49:34 +0000 Subject: [PATCH] feat(center-nodes): enforce nodeId and endpoint uniqueness --- .../src/nodes/nodes.controller.ts | 15 +++++++++++++++ docs/TODO-backend-center-guild.md | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Fabric.Backend.Center/src/nodes/nodes.controller.ts b/Fabric.Backend.Center/src/nodes/nodes.controller.ts index 433c466..77577e6 100644 --- a/Fabric.Backend.Center/src/nodes/nodes.controller.ts +++ b/Fabric.Backend.Center/src/nodes/nodes.controller.ts @@ -1,5 +1,6 @@ import { Body, + ConflictException, Controller, ForbiddenException, Get, @@ -23,6 +24,20 @@ export class NodesController { throw new ForbiddenException('invalid shared secret'); } + const existedByNodeId = await this.nodeRepo.findOne({ + where: { nodeId: body.nodeId }, + }); + if (existedByNodeId) { + throw new ConflictException('nodeId already exists'); + } + + const existedByEndpoint = await this.nodeRepo.findOne({ + where: { endpoint: body.endpoint }, + }); + if (existedByEndpoint) { + throw new ConflictException('endpoint already exists'); + } + const node = this.nodeRepo.create({ nodeId: body.nodeId, name: body.name, diff --git a/docs/TODO-backend-center-guild.md b/docs/TODO-backend-center-guild.md index b1a7861..c197bcb 100644 --- a/docs/TODO-backend-center-guild.md +++ b/docs/TODO-backend-center-guild.md @@ -24,7 +24,7 @@ ### 1.2 Guild Node 注册与握手 - [x] `POST /nodes/register` shared-secret 校验 -- [ ] node 唯一性校验(nodeId/endpoint) +- [x] node 唯一性校验(nodeId/endpoint) - [ ] node 状态模型(active/offline/revoked) - [ ] `GET /nodes` 列表 + 分页 - [ ] node 心跳接口(可选)