diff --git a/internal/db/models/server_dao.go b/internal/db/models/server_dao.go index d6345250..12c3df59 100644 --- a/internal/db/models/server_dao.go +++ b/internal/db/models/server_dao.go @@ -1064,6 +1064,17 @@ func (this *ServerDAO) UpdateUserServersClusterId(userId int64, clusterId int64) return err } +// 查找用户的所有的服务 +func (this *ServerDAO) FindAllEnabledServersWithUserId(userId int64) (result []*Server, err error) { + _, err = this.Query(). + State(ServerStateEnabled). + Attr("userId", userId). + DescPk(). + Slice(&result). + FindAll() + return +} + // 生成DNS Name func (this *ServerDAO) genDNSName() (string, error) { for { diff --git a/internal/rpc/services/service_api_node.go b/internal/rpc/services/service_api_node.go index 5a3ecb39..6db1fb4f 100644 --- a/internal/rpc/services/service_api_node.go +++ b/internal/rpc/services/service_api_node.go @@ -148,7 +148,7 @@ func (this *APINodeService) ListEnabledAPINodes(ctx context.Context, req *pb.Lis // 根据ID查找节点 func (this *APINodeService) FindEnabledAPINode(ctx context.Context, req *pb.FindEnabledAPINodeRequest) (*pb.FindEnabledAPINodeResponse, error) { - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, _, err := this.ValidateAdminAndUser(ctx, 0, 0) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_http_cache_policy.go b/internal/rpc/services/service_http_cache_policy.go index cd840a9e..8c402e6e 100644 --- a/internal/rpc/services/service_http_cache_policy.go +++ b/internal/rpc/services/service_http_cache_policy.go @@ -119,7 +119,7 @@ func (this *HTTPCachePolicyService) ListEnabledHTTPCachePolicies(ctx context.Con // 查找单个缓存策略配置 func (this *HTTPCachePolicyService) FindEnabledHTTPCachePolicyConfig(ctx context.Context, req *pb.FindEnabledHTTPCachePolicyConfigRequest) (*pb.FindEnabledHTTPCachePolicyConfigResponse, error) { // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, _, err := this.ValidateAdminAndUser(ctx, 0, 0) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 695f8559..b037e9e9 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -276,11 +276,16 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List // 查找一个集群下的所有节点 func (this *NodeService) FindAllEnabledNodesWithClusterId(ctx context.Context, req *pb.FindAllEnabledNodesWithClusterIdRequest) (*pb.FindAllEnabledNodesWithClusterIdResponse, error) { - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, userId, err := this.ValidateAdminAndUser(ctx, 0, 0) if err != nil { return nil, err } + if userId > 0 { + // TODO 检查权限 + } + + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesWithClusterId(req.NodeClusterId) if err != nil { return nil, err diff --git a/internal/rpc/services/service_node_cluster.go b/internal/rpc/services/service_node_cluster.go index 79199c5b..fda82cf9 100644 --- a/internal/rpc/services/service_node_cluster.go +++ b/internal/rpc/services/service_node_cluster.go @@ -64,11 +64,15 @@ func (this *NodeClusterService) DeleteNodeCluster(ctx context.Context, req *pb.D // 查找单个集群 func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req *pb.FindEnabledNodeClusterRequest) (*pb.FindEnabledNodeClusterResponse, error) { - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, userId, err := this.ValidateAdminAndUser(ctx, 0, 0) if err != nil { return nil, err } + if userId > 0 { + // TODO 检查用户是否有权限 + } + cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(req.NodeClusterId) if err != nil { return nil, err diff --git a/internal/rpc/services/service_node_stream.go b/internal/rpc/services/service_node_stream.go index 198fe2cf..c3e9db30 100644 --- a/internal/rpc/services/service_node_stream.go +++ b/internal/rpc/services/service_node_stream.go @@ -191,7 +191,7 @@ func (this *NodeService) NodeStream(server pb.NodeService_NodeStreamServer) erro // 向节点发送命令 func (this *NodeService) SendCommandToNode(ctx context.Context, req *pb.NodeStreamMessage) (*pb.NodeStreamMessage, error) { // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, _, err := this.ValidateAdminAndUser(ctx, 0, 0) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index 84106a64..0b610fef 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -1080,3 +1080,34 @@ func (this *ServerService) CheckUserServer(ctx context.Context, req *pb.CheckUse } return this.Success() } + +// 查找一个用户下的所有域名列表 +func (this *ServerService) FindAllEnabledServerNamesWithUserId(ctx context.Context, req *pb.FindAllEnabledServerNamesWithUserIdRequest) (*pb.FindAllEnabledServerNamesWithUserIdResponse, error) { + _, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId) + if err != nil { + return nil, err + } + + servers, err := models.SharedServerDAO.FindAllEnabledServersWithUserId(req.UserId) + if err != nil { + return nil, err + } + serverNames := []string{} + for _, server := range servers { + if len(server.ServerNames) > 0 && server.ServerNames != "null" { + serverNameConfigs := []*serverconfigs.ServerNameConfig{} + err = json.Unmarshal([]byte(server.ServerNames), &serverNameConfigs) + if err != nil { + return nil, err + } + for _, config := range serverNameConfigs { + if len(config.SubNames) == 0 { + serverNames = append(serverNames, config.Name) + } else { + serverNames = append(serverNames, config.SubNames...) + } + } + } + } + return &pb.FindAllEnabledServerNamesWithUserIdResponse{ServerNames: serverNames}, nil +}