From 10fef822257cf51725b7267b58ca19d4a9328023 Mon Sep 17 00:00:00 2001 From: 710leo <710leo@gmail.com> Date: Fri, 30 Oct 2020 13:27:44 +0800 Subject: [PATCH] modify node specification --- src/models/node.go | 10 +++++++++- src/modules/rdb/http/router_node.go | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/models/node.go b/src/models/node.go index 00ef4f03..df9144a5 100644 --- a/src/models/node.go +++ b/src/models/node.go @@ -183,14 +183,22 @@ func (n *Node) CreateChild(ident, name, note, cate, creator string, leaf, proxy return nil, fmt.Errorf("tenant node should be root node only") } + if cate == "project" && (n.Cate != "tenant" && n.Cate != "organization") { + return nil, fmt.Errorf("project node should be under tenant or organization") + } + if ident == "" { return nil, fmt.Errorf("ident is blank") } - if !str.IsMatch(ident, "^[a-zA-Z0-9\\-\\_]+$") { + if !str.IsMatch(ident, "^[a-z0-9\\-\\_]+$") { return nil, fmt.Errorf("ident invalid") } + if len(ident) >= 32 { + return nil, fmt.Errorf("ident length should be less than 32") + } + if creator != "system" { // 人为创建的节点,有些保留名字不能使用,是为了给PaaS各个子系统注册资源所用 if (n.Path == "inner" || n.Cate == "project") && slice.ContainsString(protectedNodeIdents, ident) { diff --git a/src/modules/rdb/http/router_node.go b/src/modules/rdb/http/router_node.go index e5be4cc3..d95f53de 100644 --- a/src/modules/rdb/http/router_node.go +++ b/src/modules/rdb/http/router_node.go @@ -58,8 +58,12 @@ func (f nodeForm) Validate() { bomb("arg[pid] invalid") } - if !str.IsMatch(f.Ident, `^[a-zA-Z0-9\-_]+$`) { - bomb("ident legal characters: [a-zA-Z0-9_-]") + if !str.IsMatch(f.Ident, `^[a-z0-9\-_]+$`) { + bomb("ident legal characters: [a-z0-9_-]") + } + + if len(f.Ident) >= 32 { + bomb("ident length should be less than 32") } if f.Leaf != 0 && f.Leaf != 1 {