Merge branch 'feature/permit' into 'main'

Feature/permit

See merge request apipark/APIPark!73
This commit is contained in:
刘健
2024-11-01 14:19:48 +08:00
27 changed files with 351 additions and 261 deletions
+5 -4
View File
@@ -212,10 +212,7 @@ func (i *imlServiceController) createAIService(ctx *gin.Context, teamID string,
if err != nil {
return err
}
//_, err = i.upstreamModule.Save(ctx, info.Id, newAIUpstream(info.Id, *input.Provider, p.URI()))
//if err != nil {
// return err
//}
return i.docModule.SaveServiceDoc(ctx, info.Id, &service_dto.SaveServiceDoc{
Doc: "The Translation API allows developers to translate text from one language to another. It supports multiple languages and enables easy integration of high-quality translation features into applications. With simple API requests, you can quickly translate content into different target languages.",
})
@@ -279,6 +276,10 @@ type imlAppController struct {
authModule application_authorization.IAuthorizationModule `autowired:""`
}
func (i *imlAppController) SearchCanSubscribe(ctx *gin.Context, serviceId string) ([]*service_dto.SimpleAppItem, error) {
return i.module.SearchCanSubscribe(ctx, serviceId)
}
func (i *imlAppController) Search(ctx *gin.Context, teamId string, keyword string) ([]*service_dto.AppItem, error) {
return i.module.Search(ctx, teamId, keyword)
}
+1
View File
@@ -42,6 +42,7 @@ type IAppController interface {
// SimpleApps 获取简易项目列表
SimpleApps(ctx *gin.Context, keyword string) ([]*service_dto.SimpleAppItem, error)
MySimpleApps(ctx *gin.Context, keyword string) ([]*service_dto.SimpleAppItem, error)
SearchCanSubscribe(ctx *gin.Context, keyword string) ([]*service_dto.SimpleAppItem, error)
GetApp(ctx *gin.Context, appId string) (*service_dto.App, error)
DeleteApp(ctx *gin.Context, appId string) error
}
+2
View File
@@ -76,3 +76,5 @@ require (
)
replace github.com/eolinker/ap-account => ../aoaccount
replace github.com/eolinker/go-common => ../go-common
-4
View File
@@ -28,12 +28,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eolinker/ap-account v1.0.14 h1:QE9LWx9F/t/BbTeBcjPX+Alzh3mdlHv+BVvKcBwr5dc=
github.com/eolinker/ap-account v1.0.14/go.mod h1:qLKg4xervGHTNBWaGckfPkQb+FZT0XfhwPEdNpzvsjE=
github.com/eolinker/eosc v0.17.3 h1:sr2yT+v/AsqEdciRaaZZj0zL9pTufR5RvDW6+65hraQ=
github.com/eolinker/eosc v0.17.3/go.mod h1:xgq816hpanlMXFtZw7Ztdctb1eEk9UPHchY4NfFO6Cw=
github.com/eolinker/go-common v1.1.0 h1:n/XXK7yVRen3jhNG/SfZGXJA+KNnaYf0XTDfMeviaBw=
github.com/eolinker/go-common v1.1.0/go.mod h1:Kb/jENMN1mApnodvRgV4YwO9FJby1Jkt2EUjrBjvSX4=
github.com/gabriel-vasile/mimetype v1.4.4 h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I=
github.com/gabriel-vasile/mimetype v1.4.4/go.mod h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s=
github.com/getkin/kin-openapi v0.127.0 h1:Mghqi3Dhryf3F8vR370nN67pAERW+3a95vomb3MAREY=
+1
View File
@@ -7,6 +7,7 @@ import (
_ "github.com/APIParkLab/APIPark/plugins/core"
_ "github.com/APIParkLab/APIPark/plugins/permit"
_ "github.com/APIParkLab/APIPark/plugins/publish_flow"
_ "github.com/APIParkLab/APIPark/resources/locale"
_ "github.com/eolinker/ap-account/plugin"
_ "github.com/eolinker/go-common/cache/cache_redis"
_ "github.com/eolinker/go-common/log-init"
+2
View File
@@ -320,6 +320,7 @@ func (i *imlCatalogueModule) Services(ctx context.Context, keyword string) ([]*c
if err != nil {
return nil, err
}
serviceIds := utils.SliceToSlice(items, func(i *service.Service) string {
return i.Id
}, func(s *service.Service) bool {
@@ -330,6 +331,7 @@ func (i *imlCatalogueModule) Services(ctx context.Context, keyword string) ([]*c
if len(serviceIds) < 1 {
return nil, nil
}
commits, err := i.releaseService.GetRunningApiDocCommits(ctx, serviceIds...)
if err != nil {
return nil, err
+67
View File
@@ -7,6 +7,10 @@ import (
"sort"
"strings"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/ap-account/service/role"
application_authorization "github.com/APIParkLab/APIPark/service/application-authorization"
api_doc "github.com/APIParkLab/APIPark/service/api-doc"
@@ -539,9 +543,72 @@ type imlAppModule struct {
teamMemberService team_member.ITeamMemberService `autowired:""`
subscribeService subscribe.ISubscribeService `autowired:""`
authService application_authorization.IAuthorizationService `autowired:""`
roleService role.IRoleService `autowired:""`
roleMemberService role.IRoleMemberService `autowired:""`
transaction store.ITransaction `autowired:""`
}
func (i *imlAppModule) SearchCanSubscribe(ctx context.Context, serviceId string) ([]*service_dto.SimpleAppItem, error) {
apps, err := i.searchMyApps(ctx, "", "")
if err != nil {
return nil, err
}
list, err := i.roleService.ListByPermit(ctx, access.SystemWorkspaceApplicationManagerAll)
if err == nil && len(list) > 0 {
return utils.SliceToSlice(apps, func(p *service.Service) *service_dto.SimpleAppItem {
return &service_dto.SimpleAppItem{
Id: p.Id,
Name: p.Name,
Description: p.Description,
Team: auto.UUID(p.Team),
}
}), nil
}
list, err = i.roleService.ListByPermit(ctx, access.TeamConsumerSubscriptionSubscribe)
if err != nil {
return nil, nil
}
roleIds := utils.SliceToSlice(list, func(p *role.RoleByPermit) string {
return p.Id
})
members, err := i.roleMemberService.ListByRoleIds(ctx, utils.UserId(ctx), roleIds...)
if err != nil {
return nil, err
}
if len(members) == 0 {
return nil, nil
}
subscribes, err := i.subscribeService.ListByServices(ctx, serviceId)
if err != nil {
return nil, err
}
subscribeMap := utils.SliceToMapO(subscribes, func(p *subscribe.Subscribe) (string, struct{}) {
return p.Application, struct{}{}
}, func(s *subscribe.Subscribe) bool {
return s.ApplyStatus == subscribe.ApplyStatusSubscribe
})
teamMap := utils.SliceToMapO(members, func(p *role.Member) (string, struct{}) {
return role.TrimTeamTarget(p.Target), struct{}{}
})
result := make([]*service_dto.SimpleAppItem, 0, len(apps))
for _, app := range apps {
if _, ok := teamMap[app.Team]; !ok {
continue
}
if _, ok := subscribeMap[app.Id]; ok {
continue
}
result = append(result, &service_dto.SimpleAppItem{
Id: app.Id,
Name: app.Name,
Description: app.Description,
Team: auto.UUID(app.Team),
})
}
return result, nil
}
func (i *imlAppModule) ExportAll(ctx context.Context) ([]*service_dto.ExportApp, error) {
apps, err := i.serviceService.AppList(ctx)
if err != nil {
+1
View File
@@ -47,6 +47,7 @@ type IAppModule interface {
UpdateApp(ctx context.Context, appId string, input *service_dto.UpdateApp) (*service_dto.App, error)
Search(ctx context.Context, teamId string, keyword string) ([]*service_dto.AppItem, error)
SearchMyApps(ctx context.Context, teamId string, keyword string) ([]*service_dto.AppItem, error)
SearchCanSubscribe(ctx context.Context, serviceId string) ([]*service_dto.SimpleAppItem, error)
// SimpleApps 获取简易项目列表
SimpleApps(ctx context.Context, keyword string) ([]*service_dto.SimpleAppItem, error)
MySimpleApps(ctx context.Context, keyword string) ([]*service_dto.SimpleAppItem, error)
+9 -6
View File
@@ -1,19 +1,22 @@
package core
import (
"github.com/eolinker/go-common/pm3"
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) aiAPIs() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.Providers),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.SimpleProviders),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/config", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.Provider),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.Providers, access.SystemSettingsAiProviderView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/ai/providers", []string{"context"}, []string{"providers"}, p.aiProviderController.SimpleProviders, access.SystemSettingsAiProviderView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/config", []string{"context", "query:provider"}, []string{"provider"}, p.aiProviderController.Provider, access.SystemSettingsAiProviderView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai/provider/llms", []string{"context", "query:provider"}, []string{"llms", "provider"}, p.aiProviderController.LLMs),
//pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/enable", []string{"context", "query:provider"}, nil, p.aiProviderController.Enable),
//pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/disable", []string{"context", "query:provider"}, nil, p.aiProviderController.Disable),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/config", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderConfig),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/default-llm", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderDefaultLLM),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/config", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderConfig, access.SystemSettingsAiProviderManager),
//pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai/provider/default-llm", []string{"context", "query:provider", "body"}, nil, p.aiProviderController.UpdateProviderDefaultLLM),
}
}
+14 -13
View File
@@ -3,27 +3,28 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) apiApis() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/routers", []string{"context", "query:keyword", "query:service"}, []string{"routers"}, p.routerController.Search),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/router/detail", []string{"context", "query:service", "query:router"}, []string{"router"}, p.routerController.Detail),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/router", []string{"context", "query:service", "body"}, []string{"router"}, p.routerController.Create),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/router", []string{"context", "query:service", "query:router", "body"}, []string{"router"}, p.routerController.Edit),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/router", []string{"context", "query:service", "query:router"}, nil, p.routerController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/routers", []string{"context", "query:keyword", "query:service"}, []string{"routers"}, p.routerController.Search, access.SystemWorkspaceServiceViewAll, access.TeamServiceApiView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/router/detail", []string{"context", "query:service", "query:router"}, []string{"router"}, p.routerController.Detail, access.SystemWorkspaceServiceViewAll, access.TeamServiceApiView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/router", []string{"context", "query:service", "body"}, []string{"router"}, p.routerController.Create, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/router", []string{"context", "query:service", "query:router", "body"}, []string{"router"}, p.routerController.Edit, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/router", []string{"context", "query:service", "query:router"}, nil, p.routerController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/router/define", []string{"context", "query:service"}, []string{"prefix", "force"}, p.routerController.Prefix),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/api_doc", []string{"context", "query:service", "body"}, []string{"doc"}, p.apiDocController.UpdateDoc),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/api_doc", []string{"context", "query:service"}, []string{"doc"}, p.apiDocController.GetDoc),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/api_doc", []string{"context", "query:service", "body"}, []string{"doc"}, p.apiDocController.UpdateDoc, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiDocManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/api_doc", []string{"context", "query:service"}, []string{"doc"}, p.apiDocController.GetDoc, access.SystemWorkspaceServiceViewAll, access.TeamServiceApiDocView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/api_doc/upload", []string{"context", "query:service"}, []string{"doc"}, p.apiDocController.UploadDoc),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/api_doc/upload", []string{"context", "query:service"}, []string{"doc"}, p.apiDocController.UploadDoc, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiDocManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router"}, []string{"api"}, p.aiAPIController.Get),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/ai-routers", []string{"context", "query:keyword", "query:service"}, []string{"apis"}, p.aiAPIController.List),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router", "body"}, []string{"api"}, p.aiAPIController.Edit),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/ai-router", []string{"context", "query:service", "body"}, []string{"api"}, p.aiAPIController.Create),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router"}, nil, p.aiAPIController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router"}, []string{"api"}, p.aiAPIController.Get, access.SystemWorkspaceServiceViewAll, access.TeamServiceApiView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/ai-routers", []string{"context", "query:keyword", "query:service"}, []string{"apis"}, p.aiAPIController.List, access.SystemWorkspaceServiceViewAll, access.TeamServiceApiView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router", "body"}, []string{"api"}, p.aiAPIController.Edit, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/ai-router", []string{"context", "query:service", "body"}, []string{"api"}, p.aiAPIController.Create, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/ai-router", []string{"context", "query:service", "query:router"}, nil, p.aiAPIController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamServiceApiManager),
}
}
@@ -3,16 +3,17 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) projectAuthorizationApis() []pm3.Api {
func (p *plugin) appAuthorizationApis() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/app/authorization", []string{"context", "query:app", "body"}, []string{"authorization"}, p.appAuthorizationController.AddAuthorization),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization", "body"}, []string{"authorization"}, p.appAuthorizationController.EditAuthorization),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, nil, p.appAuthorizationController.DeleteAuthorization),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, []string{"authorization"}, p.appAuthorizationController.Info),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorizations", []string{"context", "query:app"}, []string{"authorizations"}, p.appAuthorizationController.Authorizations),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorization/details", []string{"context", "query:app", "query:authorization"}, []string{"details"}, p.appAuthorizationController.Detail),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/app/authorization", []string{"context", "query:app", "body"}, []string{"authorization"}, p.appAuthorizationController.AddAuthorization, access.SystemWorkspaceApplicationManagerAll, access.TeamConsumerAuthorizationManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization", "body"}, []string{"authorization"}, p.appAuthorizationController.EditAuthorization, access.SystemWorkspaceApplicationManagerAll, access.TeamConsumerAuthorizationManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, nil, p.appAuthorizationController.DeleteAuthorization, access.SystemWorkspaceApplicationManagerAll, access.TeamConsumerAuthorizationManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorization", []string{"context", "query:app", "query:authorization"}, []string{"authorization"}, p.appAuthorizationController.Info, access.SystemWorkspaceApplicationViewAll, access.TeamConsumerAuthorizationView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorizations", []string{"context", "query:app"}, []string{"authorizations"}, p.appAuthorizationController.Authorizations, access.SystemWorkspaceApplicationViewAll, access.TeamConsumerAuthorizationView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/authorization/details", []string{"context", "query:app", "query:authorization"}, []string{"details"}, p.appAuthorizationController.Detail, access.SystemWorkspaceApplicationViewAll, access.TeamConsumerAuthorizationView),
}
}
+6 -5
View File
@@ -3,15 +3,16 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) certificateApi() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/certificates", []string{"context"}, []string{"certificates"}, p.certificateController.ListForPartition),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/certificate", []string{"context", "query:id"}, []string{"certificate", "cert"}, p.certificateController.Detail),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/certificate", []string{"context", "body"}, nil, p.certificateController.Create),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/certificate", []string{"context", "query:id", "body"}, nil, p.certificateController.Update),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/certificate", []string{"context", "query:id"}, []string{"id"}, p.certificateController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/certificates", []string{"context"}, []string{"certificates"}, p.certificateController.ListForPartition, access.SystemSettingsSslCertificateView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/certificate", []string{"context", "query:id"}, []string{"certificate", "cert"}, p.certificateController.Detail, access.SystemSettingsSslCertificateView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/certificate", []string{"context", "body"}, nil, p.certificateController.Create, access.SystemSettingsSslCertificateManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/certificate", []string{"context", "query:id", "body"}, nil, p.certificateController.Update, access.SystemSettingsSslCertificateManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/certificate", []string{"context", "query:id"}, []string{"id"}, p.certificateController.Delete, access.SystemSettingsSslCertificateManager),
}
}
+4 -3
View File
@@ -3,13 +3,14 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) clusterApi() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/cluster/nodes", []string{"context", "query:partition"}, []string{"nodes"}, p.clusterController.Nodes),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/cluster/reset", []string{"context", "query:partition", "body"}, []string{"nodes"}, p.clusterController.ResetCluster),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/cluster/check", []string{"context", "body"}, []string{"nodes"}, p.clusterController.Check),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/cluster/nodes", []string{"context", "query:partition"}, []string{"nodes"}, p.clusterController.Nodes, access.SystemSettingsApiGatewayView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/cluster/reset", []string{"context", "query:partition", "body"}, []string{"nodes"}, p.clusterController.ResetCluster, access.SystemSettingsApiGatewayManager),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/cluster/check", []string{"context", "body"}, []string{"nodes"}, p.clusterController.Check, access.SystemSettingsApiGatewayManager),
}
}
+1 -1
View File
@@ -97,7 +97,7 @@ func (p *plugin) OnComplete() {
p.apis = append(p.apis, p.upstreamApis()...)
p.apis = append(p.apis, p.apiApis()...)
p.apis = append(p.apis, p.subscribeApis()...)
p.apis = append(p.apis, p.projectAuthorizationApis()...)
p.apis = append(p.apis, p.appAuthorizationApis()...)
p.apis = append(p.apis, p.releaseApis()...)
p.apis = append(p.apis, p.DynamicModuleApis()...)
p.apis = append(p.apis, p.monitorStatisticApis()...)
+7 -6
View File
@@ -3,18 +3,19 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) monitorStatisticApis() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/top10", []string{"context", "body"}, []string{"top10"}, p.monitorStatisticController.Top10),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/summary", []string{"context", "body"}, []string{"request_summary", "proxy_summary"}, p.monitorStatisticController.Summary),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/invoke", []string{"context", "body"}, []string{"date", "request_total", "proxy_total", "status_4xx", "status_5xx", "request_rate", "proxy_rate", "time_interval"}, p.monitorStatisticController.OverviewInvokeTrend),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/message", []string{"context", "body"}, []string{"date", "request_message", "response_message", "time_interval"}, p.monitorStatisticController.OverviewMessageTrend),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/top10", []string{"context", "body"}, []string{"top10"}, p.monitorStatisticController.Top10, access.SystemAnalysisRunViewView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/summary", []string{"context", "body"}, []string{"request_summary", "proxy_summary"}, p.monitorStatisticController.Summary, access.SystemAnalysisRunViewView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/invoke", []string{"context", "body"}, []string{"date", "request_total", "proxy_total", "status_4xx", "status_5xx", "request_rate", "proxy_rate", "time_interval"}, p.monitorStatisticController.OverviewInvokeTrend, access.SystemAnalysisRunViewView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/overview/message", []string{"context", "body"}, []string{"date", "request_message", "response_message", "time_interval"}, p.monitorStatisticController.OverviewMessageTrend, access.SystemAnalysisRunViewView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/config", []string{"context", "body"}, []string{"info"}, p.monitorConfigController.SaveMonitorConfig),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/monitor/config", []string{"context"}, []string{"info"}, p.monitorConfigController.GetMonitorConfig),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/monitor/config", []string{"context", "body"}, []string{"info"}, p.monitorConfigController.SaveMonitorConfig, access.SystemSettingsDataSourceManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/monitor/config", []string{"context"}, []string{"info"}, p.monitorConfigController.GetMonitorConfig, access.SystemSettingsDataSourceView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/monitor/clusters", []string{"context"}, []string{"clusters"}, p.monitorConfigController.GetMonitorCluster),
}
}
+11 -10
View File
@@ -3,27 +3,28 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) MyTeamApi() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team", []string{"context", "query:team"}, []string{"team"}, p.myTeamController.GetTeam),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team", []string{"context", "query:team"}, []string{"team"}, p.myTeamController.GetTeam, access.SystemWorkspaceTeamViewAll, access.TeamTeamTeamView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/teams", []string{"context", "query:keyword"}, []string{"teams"}, p.myTeamController.Search),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/teams/mine", []string{"context", "query:keyword"}, []string{"teams"}, p.myTeamController.MySimpleTeams),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/teams", []string{"context", "query:keyword"}, []string{"teams"}, p.myTeamController.SimpleTeams),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/members/simple", []string{"context", "query:team", "query:keyword"}, []string{"teams"}, p.myTeamController.SimpleMembers),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/team", []string{"context", "query:team", "body"}, []string{"team"}, p.myTeamController.EditTeam),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/member", []string{"context", "query:team", "body"}, nil, p.myTeamController.AddMember),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/member", []string{"context", "query:team", "query:user"}, nil, p.myTeamController.RemoveMember),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/members", []string{"context", "query:team", "query:keyword"}, []string{"members"}, p.myTeamController.Members),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/team", []string{"context", "query:team", "body"}, []string{"team"}, p.myTeamController.EditTeam, access.SystemWorkspaceTeamManager, access.TeamTeamTeamManager),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/member", []string{"context", "query:team", "body"}, nil, p.myTeamController.AddMember, access.SystemWorkspaceTeamManager, access.TeamTeamMemberManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/member", []string{"context", "query:team", "query:user"}, nil, p.myTeamController.RemoveMember, access.SystemWorkspaceTeamManager, access.TeamTeamMemberManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/members", []string{"context", "query:team", "query:keyword"}, []string{"members"}, p.myTeamController.Members, access.SystemWorkspaceTeamViewAll, access.TeamTeamMemberView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/team/member/role", []string{"context", "query:team", "body"}, nil, p.myTeamController.UpdateMemberRole),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/team/member/role", []string{"context", "query:team", "body"}, nil, p.myTeamController.UpdateMemberRole, access.SystemWorkspaceTeamManager, access.TeamTeamMemberManager),
// 团队项目操作
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/service", []string{"context", "query:team", "body"}, []string{"service"}, p.serviceController.Create),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/app", []string{"context", "query:team", "body"}, []string{"app"}, p.appController.CreateApp),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/service", []string{"context", "query:service"}, nil, p.serviceController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/team/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/service", []string{"context", "query:team", "body"}, []string{"service"}, p.serviceController.Create, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/app", []string{"context", "query:team", "body"}, []string{"app"}, p.appController.CreateApp, access.SystemWorkspaceApplicationManagerAll, access.TeamTeamConsumerManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/service", []string{"context", "query:service"}, nil, p.serviceController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager),
}
}
+6 -5
View File
@@ -3,16 +3,17 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) releaseApis() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/release", []string{"context", "query:service", "body"}, []string{}, p.releaseController.Create),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/release", []string{"context", "query:service", "query:id"}, []string{}, p.releaseController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/release", []string{"context", "query:service", "query:id"}, []string{"release"}, p.releaseController.Detail),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/releases", []string{"context", "query:service"}, []string{"releases"}, p.releaseController.List),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/release/preview", []string{"context", "query:service"}, []string{"running", "diff", "complete"}, p.releaseController.Preview),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/service/release", []string{"context", "query:service", "body"}, []string{}, p.releaseController.Create, access.SystemWorkspaceServiceManagerAll, access.TeamServiceReleaseManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/release", []string{"context", "query:service", "query:id"}, []string{}, p.releaseController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamServiceReleaseManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/release", []string{"context", "query:service", "query:id"}, []string{"release"}, p.releaseController.Detail, access.SystemWorkspaceServiceViewAll, access.TeamServiceReleaseView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/releases", []string{"context", "query:service"}, []string{"releases"}, p.releaseController.List, access.SystemWorkspaceServiceViewAll, access.TeamServiceReleaseView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/release/preview", []string{"context", "query:service"}, []string{"running", "diff", "complete"}, p.releaseController.Preview, access.SystemWorkspaceServiceViewAll, access.TeamServiceReleaseView),
}
}
+12 -23
View File
@@ -3,40 +3,29 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) ServiceApis() []pm3.Api {
return []pm3.Api{
// 项目
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/info", []string{"context", "query:service"}, []string{"service"}, p.serviceController.Get),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/info", []string{"context", "query:service", "body"}, []string{"service"}, p.serviceController.Edit),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/info", []string{"context", "query:service"}, nil, p.serviceController.Delete),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/info", []string{"context", "query:service"}, []string{"service"}, p.serviceController.Get, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/info", []string{"context", "query:service", "body"}, []string{"service"}, p.serviceController.Edit, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/service/info", []string{"context", "query:service"}, nil, p.serviceController.Delete, access.SystemWorkspaceServiceManagerAll, access.TeamTeamServiceManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/my_services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.SearchMyServices),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search),
//pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/services/mine", []string{"context", "query:keyword"}, []string{"services"}, p.serviceController.MySimple),
//
//pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/services", []string{"context", "query:keyword"}, []string{"services"}, p.serviceController.Simple),
// AI服务
//pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai-services", []string{"context", "query:service", "query:keyword"}, []string{"services"}, p.serviceController.SearchAIServices),
//pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/team/ai-service", []string{"context", "query:team", "body"}, []string{"service"}, p.serviceController.CreateAIService),
//pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/ai-service/info", []string{"context", "query:service", "body"}, []string{"service"}, p.serviceController.EditAIService),
//pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/team/ai-service", []string{"context", "query:service"}, nil, p.serviceController.DeleteAIService),
//pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/my_ai_services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.SearchMyAIServices),
//pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/ai-service/info", []string{"context", "query:service"}, []string{"service"}, p.serviceController.Get),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/services", []string{"context", "query:team", "query:keyword"}, []string{"services"}, p.serviceController.Search, access.SystemWorkspaceServiceViewAll, access.TeamTeamServiceView),
// 应用相关
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/info", []string{"context", "query:app"}, []string{"app"}, p.appController.GetApp),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/app", []string{"context", "query:app"}, nil, p.appController.DeleteApp),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/app/info", []string{"context", "query:app"}, []string{"app"}, p.appController.GetApp, access.SystemWorkspaceApplicationViewAll, access.TeamTeamConsumerView),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/app", []string{"context", "query:app"}, nil, p.appController.DeleteApp, access.SystemWorkspaceApplicationManagerAll, access.TeamTeamConsumerManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/apps", []string{"context", "query:keyword"}, []string{"apps"}, p.appController.SimpleApps),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/simple/apps/mine", []string{"context", "query:keyword"}, []string{"apps"}, p.appController.MySimpleApps),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/my_apps", []string{"context", "query:team", "query:keyword"}, []string{"apps"}, p.appController.SearchMyApps),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/apps", []string{"context", "query:team", "query:keyword"}, []string{"apps"}, p.appController.Search),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/app/info", []string{"context", "query:app", "body"}, []string{"app"}, p.appController.UpdateApp),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/apps", []string{"context", "query:team", "query:keyword"}, []string{"apps"}, p.appController.Search, access.SystemWorkspaceApplicationViewAll),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/apps/can_subscribe", []string{"context", "query:service"}, []string{"app"}, p.appController.SearchCanSubscribe),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/app/info", []string{"context", "query:app", "body"}, []string{"app"}, p.appController.UpdateApp, access.SystemWorkspaceApplicationManagerAll, access.TeamTeamConsumerManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/doc", []string{"context", "query:service"}, []string{"doc"}, p.serviceController.ServiceDoc),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/doc", []string{"context", "query:service", "body"}, nil, p.serviceController.SaveServiceDoc),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/doc", []string{"context", "query:service"}, []string{"doc"}, p.serviceController.ServiceDoc, access.SystemWorkspaceServiceViewAll, access.TeamServiceServiceIntroView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/doc", []string{"context", "query:service", "body"}, nil, p.serviceController.SaveServiceDoc, access.SystemWorkspaceServiceManagerAll, access.TeamServiceServiceIntroManager),
}
}
+8 -7
View File
@@ -3,18 +3,19 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) catalogueApi() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogues", []string{"context", "query:keyword"}, []string{"catalogues", "tags"}, p.catalogueController.Search),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/catalogue", []string{"context", "body"}, nil, p.catalogueController.Create),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/catalogue", []string{"context", "query:catalogue", "body"}, nil, p.catalogueController.Edit),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/catalogue", []string{"context", "query:catalogue"}, nil, p.catalogueController.Delete),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/catalogue/sort", []string{"context", "body"}, nil, p.catalogueController.Sort),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogue/services", []string{"context", "query:keyword"}, []string{"services"}, p.catalogueController.Services),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogue/service", []string{"context", "query:service"}, []string{"service"}, p.catalogueController.ServiceDetail),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogues", []string{"context", "query:keyword"}, []string{"catalogues", "tags"}, p.catalogueController.Search, access.SystemSettingsGeneralView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/catalogue", []string{"context", "body"}, nil, p.catalogueController.Create, access.SystemSettingsGeneralManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/catalogue", []string{"context", "query:catalogue", "body"}, nil, p.catalogueController.Edit, access.SystemSettingsGeneralManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/catalogue", []string{"context", "query:catalogue"}, nil, p.catalogueController.Delete, access.SystemSettingsGeneralManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/catalogue/sort", []string{"context", "body"}, nil, p.catalogueController.Sort, access.SystemSettingsGeneralManager),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogue/services", []string{"context", "query:keyword"}, []string{"services"}, p.catalogueController.Services, access.SystemApiPortalApiPortalView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/catalogue/service", []string{"context", "query:service"}, []string{"service"}, p.catalogueController.ServiceDetail, access.SystemApiPortalApiPortalView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/catalogue/service/subscribe", []string{"context", "body"}, nil, p.catalogueController.Subscribe),
}
}
+9 -6
View File
@@ -1,16 +1,19 @@
package core
import (
"github.com/eolinker/go-common/pm3"
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) TeamManagerApi() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/manager/team", []string{"context", "query:id"}, []string{"team"}, p.teamManagerController.GetTeam),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/manager/teams", []string{"context", "query:keyword"}, []string{"teams"}, p.teamManagerController.Search),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/manager/team", []string{"context", "body"}, []string{"team"}, p.teamManagerController.CreateTeam),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/manager/team", []string{"context", "query:id", "body"}, []string{"team"}, p.teamManagerController.EditTeam),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/manager/team", []string{"context", "query:id"}, []string{"id"}, p.teamManagerController.DeleteTeam),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/manager/team", []string{"context", "query:id"}, []string{"team"}, p.teamManagerController.GetTeam, access.SystemWorkspaceTeamViewAll, access.TeamTeamTeamView),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/manager/teams", []string{"context", "query:keyword"}, []string{"teams"}, p.teamManagerController.Search, access.SystemWorkspaceTeamViewAll, access.TeamTeamTeamView),
pm3.CreateApiWidthDoc(http.MethodPost, "/api/v1/manager/team", []string{"context", "body"}, []string{"team"}, p.teamManagerController.CreateTeam, access.SystemWorkspaceTeamCreate, access.TeamTeamTeamManager),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/manager/team", []string{"context", "query:id", "body"}, []string{"team"}, p.teamManagerController.EditTeam, access.SystemWorkspaceTeamManager, access.TeamTeamTeamManager),
pm3.CreateApiWidthDoc(http.MethodDelete, "/api/v1/manager/team", []string{"context", "query:id"}, []string{"id"}, p.teamManagerController.DeleteTeam, access.SystemWorkspaceTeamManager, access.TeamTeamTeamManager),
}
}
+3 -2
View File
@@ -3,12 +3,13 @@ package core
import (
"net/http"
"github.com/APIParkLab/APIPark/resources/access"
"github.com/eolinker/go-common/pm3"
)
func (p *plugin) upstreamApis() []pm3.Api {
return []pm3.Api{
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/upstream", []string{"context", "query:service"}, []string{"upstream"}, p.upstreamController.Get),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/upstream", []string{"context", "query:service", "body"}, []string{"upstream"}, p.upstreamController.Save),
pm3.CreateApiWidthDoc(http.MethodGet, "/api/v1/service/upstream", []string{"context", "query:service"}, []string{"upstream"}, p.upstreamController.Get, access.SystemWorkspaceServiceViewAll, access.TeamServiceUpstreamView),
pm3.CreateApiWidthDoc(http.MethodPut, "/api/v1/service/upstream", []string{"context", "query:service", "body"}, []string{"upstream"}, p.upstreamController.Save, access.SystemWorkspaceServiceManagerAll, access.TeamServiceUpstreamManager),
}
}
+59 -19
View File
@@ -3,8 +3,9 @@ package access
import (
_ "embed"
yaml "gopkg.in/yaml.v3"
"github.com/eolinker/go-common/access"
"gopkg.in/yaml.v3"
)
type Access = access.Access
@@ -24,22 +25,61 @@ func init() {
access.Add(group, asl)
}
//defaultRoles := access.Roles()
//for group, rs := range defaultRoles {
// p, has := access.GetPermit(group)
// if !has {
// continue
// }
//
// for _, r := range rs {
// for _, pm := range r.Permits {
// apis, err := p.GetPermits(pm)
// if err != nil {
// continue
// }
// permit.AddPermitRule(pm, apis...)
// }
// }
//
//}
}
const (
SystemAnalysisRunViewView = "system.analysis.run_view.view"
SystemApiPortalApiPortalView = "system.api_portal.api_portal.view"
SystemSettingsAccountManager = "system.settings.account.manager"
SystemSettingsAccountView = "system.settings.account.view"
SystemSettingsAiProviderManager = "system.settings.ai_provider.manager"
SystemSettingsAiProviderView = "system.settings.ai_provider.view"
SystemSettingsApiGatewayManager = "system.settings.api_gateway.manager"
SystemSettingsApiGatewayView = "system.settings.api_gateway.view"
SystemSettingsDataSourceManager = "system.settings.data_source.manager"
SystemSettingsDataSourceView = "system.settings.data_source.view"
SystemSettingsGeneralManager = "system.settings.general.manager"
SystemSettingsGeneralView = "system.settings.general.view"
SystemSettingsLogConfigurationManager = "system.settings.log_configuration.manager"
SystemSettingsLogConfigurationView = "system.settings.log_configuration.view"
SystemSettingsRoleView = "system.settings.role.view"
SystemSettingsSslCertificateManager = "system.settings.ssl_certificate.manager"
SystemSettingsSslCertificateView = "system.settings.ssl_certificate.view"
SystemWorkspaceApplicationManagerAll = "system.workspace.application.manager_all"
SystemWorkspaceApplicationViewAll = "system.workspace.application.view_all"
SystemWorkspaceServiceManagerAll = "system.workspace.service.manager_all"
SystemWorkspaceServiceViewAll = "system.workspace.service.view_all"
SystemWorkspaceTeamCreate = "system.workspace.team.create"
SystemWorkspaceTeamManager = "system.workspace.team.manager"
SystemWorkspaceTeamViewAll = "system.workspace.team.view_all"
)
const (
TeamConsumerApplicationManager = "team.consumer.application.manager"
TeamConsumerAuthorizationManager = "team.consumer.authorization.manager"
TeamConsumerAuthorizationView = "team.consumer.authorization.view"
TeamConsumerSubscriptionManagerSubscribed = "team.consumer.subscription.manager_subscribed_services"
TeamConsumerSubscriptionSubscribe = "team.consumer.subscription.subscribe"
TeamConsumerSubscriptionViewSubscribed = "team.consumer.subscription.view_subscribed_service"
TeamServiceApiManager = "team.service.api.manager"
TeamServiceApiView = "team.service.api.view"
TeamServiceApiDocManager = "team.service.api_doc.manager"
TeamServiceApiDocView = "team.service.api_doc.view"
TeamServiceReleaseManager = "team.service.release.manager"
TeamServiceReleaseView = "team.service.release.view"
TeamServiceServiceManager = "team.service.service.manager"
TeamServiceServiceIntroManager = "team.service.service_intro.manager"
TeamServiceServiceIntroView = "team.service.service_intro.view"
TeamServiceSubscriptionManager = "team.service.subscription.manager"
TeamServiceSubscriptionView = "team.service.subscription.view"
TeamServiceUpstreamManager = "team.service.upstream.manager"
TeamServiceUpstreamView = "team.service.upstream.view"
TeamTeamConsumerManager = "team.team.consumer.manager"
TeamTeamConsumerView = "team.team.consumer.view"
TeamTeamMemberManager = "team.team.member.manager"
TeamTeamMemberView = "team.team.member.view"
TeamTeamServiceManager = "team.team.service.manager"
TeamTeamServiceView = "team.team.service.view"
TeamTeamTeamManager = "team.team.team.manager"
TeamTeamTeamView = "team.team.team.view"
)
+6 -121
View File
@@ -71,19 +71,6 @@ system:
guest_allow: true
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/user/account"
- "PUT:/api/v1/user/account"
- "DELETE:/api/v1/user/account"
- "POST:/api/v1/user/account/enable"
- "POST:/api/v1/user/account/disable"
- "POST:/api/v1/user/department"
- "PUT:/api/v1/user/department"
- "DELETE:/api/v1/user/department"
- "POST:/api/v1/user/department/member"
- "DELETE:/api/v1/user/department/member"
- "POST:/api/v1/user/department/member/remove"
- "POST:/api/v1/account/role"
dependents:
- system.settings.account.view
- name: role
@@ -92,11 +79,6 @@ system:
- name: view
guest_allow: true
value: 'view'
apis:
- "GET:/api/v1/system/roles"
- "GET:/api/v1/system/role"
- "GET:/api/v1/team/roles"
- "GET:/api/v1/team/role"
- name: api gateway
value: 'api_gateway'
children:
@@ -104,27 +86,18 @@ system:
cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/cluster/nodes"
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/cluster/reset"
- "POST:/api/v1/cluster/check"
dependents:
- system.settings.api_gateway.view
- name: ai provider
value: 'ai_provider'
children:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/ai/providers"
- "GET:/api/v1/ai/provider/config"
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/ai/provider/config"
- "PUT:/api/v1/ai/provider/default-llm"
dependents:
- system.settings.ai_provider.view
- name: ssl certificate
@@ -134,15 +107,8 @@ system:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/certificates"
- "GET:/api/v1/certificate"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/certificate"
- "PUT:/api/v1/certificate"
- "DELETE:/api/v1/certificate"
dependents:
- system.settings.ssl_certificate.view
- name: data source
@@ -151,13 +117,8 @@ system:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/monitor/config"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/monitor/config"
- "PUT:/api/v1/monitor/config"
dependents:
- system.settings.data_source.view
- name: log configuration
@@ -166,18 +127,8 @@ system:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/dynamic/{name}/info"
- "GET:/api/v1/dynamic/{name}/list"
- "GET:/api/v1/dynamic/{name}/render"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/dynamic/{name}"
- "PUT:/api/v1/dynamic/{name}/config"
- "DELETE:/api/v1/dynamic/{name}/batch"
- "PUT:/api/v1/dynamic/{name}/online"
- "PUT:/api/v1/dynamic/{name}/offline"
dependents:
- system.settings.log_configuration.view
team:
@@ -190,17 +141,8 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/routers"
- "GET:/api/v1/service/router/detail"
- "GET:/api/v1/service/router/detail/simple"
- "GET:/api/v1/service/router/define"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/service/router"
- "PUT:/api/v1/service/router"
- "DELETE:/api/v1/service/router"
dependents:
- team.service.api.view
- name: api doc
@@ -210,13 +152,8 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/api_doc"
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/service/api_doc"
- "POST:/api/v1/service/api_doc/upload"
dependents:
- team.service.api_doc.view
- name: service intro
@@ -236,12 +173,8 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/upstream"
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/service/upstream"
dependents:
- team.service.upstream.view
- name: release
@@ -250,18 +183,8 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/releases"
- "GET:/api/v1/service/release"
- "GET:/api/v1/service/publishs"
- "GET:/api/v1/service/publish/check"
- "GET:/api/v1/service/release/preview"
- "GET:/api/v1/service/publish/status"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/service/publish/release/do"
- "DELETE:/api/v1/service/release"
dependents:
- team.service.release.view
- name: subscription review
@@ -270,29 +193,10 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/approval/subscribes"
- "GET:/api/v1/service/approval/subscribe"
- "GET:/api/v1/service/subscribers"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/service/approval/subscribe"
- "POST:/api/v1/service/subscriber"
- "DELETE:/api/v1/service/subscriber"
dependents:
- team.service.subscription.view
- name: service
value: 'service'
children:
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/service/info"
- "POST:/api/v1/team/service"
- "DELETE:/api/v1/team/service"
dependents:
- team.service.service.manager
- name: consumer
value: 'consumer'
children:
@@ -305,38 +209,20 @@ team:
- name: view subscribed services
value: 'view_subscribed_service'
guest_allow: true
apis:
- "GET:/api/v1/application/subscription"
- name: manager subscribed services
value: 'manager_subscribed_services'
apis:
- "POST:/api/v1/catalogue/service/subscribe"
- "POST:/api/v1/application/subscription/cancel"
- "POST:/api/v1/application/subscription/cancel_apply"
dependents:
- team.consumer.subscription.manager_subscribed_services
- name: authorization
value: 'authorization'
children:
- name: view
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/app/authorization"
- "GET:/api/v1/app/authorizations"
- "GET:/api/v1/app/authorization/details"
- name: manager
value: 'manager'
apis:
- "POST:/api/v1/app/authorization"
- "PUT:/api/v1/app/authorization"
- "DELETE:/api/v1/app/authorization"
- name: consumer
value: 'application'
children:
- name: manager
value: 'manager'
apis:
- "PUT:/api/v1/app/info"
- "POST:/api/v1/team/app"
dependents:
- team.consumer.authorization.view
- name: team
value: 'team'
children:
@@ -376,7 +262,6 @@ team:
- name: view
value: 'view'
guest_allow: true
apis:
- name: manager
value: 'manager'
apis:
+3 -19
View File
@@ -5,18 +5,15 @@ import (
"encoding/json"
"strings"
"github.com/eolinker/eosc"
"github.com/eolinker/go-common/pm3"
)
var (
//go:embed i18n/*
i18nDirs embed.FS
i18nData eosc.Untyped[string, map[string]string]
defaultI18n = "zh-CN"
i18nDirs embed.FS
)
func init() {
i18nData = eosc.BuildUntyped[string, map[string]string]()
files, err := i18nDirs.ReadDir("i18n")
if err != nil {
panic(err)
@@ -34,19 +31,6 @@ func init() {
panic(err)
}
key := strings.TrimSuffix(f.Name(), ".json")
i18nData.Set(key, tmp)
pm3.I18nRegister(key, tmp)
}
}
func Get(i18n string) map[string]string {
result, has := i18nData.Get(i18n)
if has {
return result
}
result, has = i18nData.Get(defaultI18n)
if !has {
return make(map[string]string)
}
return result
}
+95
View File
@@ -0,0 +1,95 @@
version: '3'
services:
apipark-mysql:
image: mysql:8.0.37
privileged: true
restart: always
container_name: apipark-mysql
hostname: apipark-mysql
command:
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
ports:
- "33306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=apipark
volumes:
- /var/lib/apipark/mysql:/var/lib/mysql
networks:
- apipark
apipark:
image: apipark/apipark:v1.2.0-beta
container_name: apipark
privileged: true
restart: always
networks:
- apipark
ports:
- "18288:8288"
depends_on:
- apipark-mysql
environment:
- MYSQL_USER_NAME=root
- MYSQL_PWD=123456
- MYSQL_IP=apipark-mysql
- MYSQL_PORT=3306 #mysql端口
- MYSQL_DB="apipark"
- ERROR_DIR=work/logs # 日志放置目录
- ERROR_FILE_NAME=error.log # 错误日志文件名
- ERROR_LOG_LEVEL=info # 错误日志等级,可选:panic,fatal,error,warning,info,debug,trace 不填或者非法则为info
- ERROR_EXPIRE=7d # 错误日志过期时间,默认单位为天,d|天,h|小时, 不合法配置默认为7d
- ERROR_PERIOD=day # 错误日志切割周期,仅支持day、hour
- REDIS_ADDR=apipark-redis:6379 #Redis集群地址 多个用,隔开
- REDIS_PWD=123456 # Redis密码
- ADMIN_PASSWORD=12345678
influxdb2:
image: influxdb:2.6
privileged: true
restart: always
container_name: influxdb2
hostname: influxdb2
ports:
- "8086:8086"
volumes:
- /var/lib/apipark/influxdb2:/var/lib/influxdb2
networks:
- apipark
apipark-redis:
container_name: apipark-redis
image: redis:7.2.4
hostname: apipark-redis
privileged: true
restart: always
ports:
- 6379:6379
command:
- bash
- -c
- "redis-server --protected-mode yes --logfile redis.log --appendonly no --port 6379 --requirepass 123456"
networks:
- apipark
apipark-apinto:
image: eolinker/apinto-gateway
container_name: apipark-apinto
privileged: true
restart: always
command:
- ./start.sh
ports:
- "8099:8099"
- "9400:9400"
- "9401:9401"
volumes:
- /var/lib/apipark/apinto/data:/var/lib/apinto
- /var/lib/apipark/apinto/log:/var/log/apinto
- ${PWD}/config.yml:/etc/apinto/config.yml
networks:
- apipark
networks:
apipark:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.100.0.0/24
+7
View File
@@ -31,3 +31,10 @@ if [ ! -d "./aoaccount" ]; then
fi
cd "./aoaccount" && git pull
echo "更新go-common"
cd "${BASEPATH}/"
if [ ! -d "./go-common" ]; then
git clone http://gitlab.eolink.com/apinto/go-common.git
fi
cd "./go-common" && git pull
+4
View File
@@ -32,6 +32,7 @@ func (i *imlServiceService) ServiceList(ctx context.Context, serviceIds ...strin
w["uuid"] = serviceIds
}
w["as_server"] = true
w["is_delete"] = false
list, err := i.store.List(ctx, w)
if err != nil {
return nil, err
@@ -46,6 +47,7 @@ func (i *imlServiceService) ServiceListByKind(ctx context.Context, kind Kind, se
}
w["as_server"] = true
w["kind"] = kind
w["is_delete"] = false
list, err := i.store.List(ctx, w)
if err != nil {
return nil, err
@@ -57,6 +59,7 @@ func (i *imlServiceService) SearchPublicServices(ctx context.Context, keyword st
w := map[string]interface{}{
"as_server": true,
"service_type": PublicService.Int(),
"is_delete": false,
}
list, err := i.store.Search(ctx, keyword, w)
if err != nil {
@@ -93,6 +96,7 @@ func (i *imlServiceService) AppList(ctx context.Context, appIds ...string) ([]*S
w["uuid"] = appIds
}
w["as_app"] = true
w["is_delete"] = false
list, err := i.store.List(ctx, w)
if err != nil {
return nil, err