Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
#116 菜单绑定API权限
Browse files Browse the repository at this point in the history
tangjiawei committed Jan 9, 2025
1 parent b7a7ed3 commit 4393121
Showing 4 changed files with 33 additions and 20 deletions.
43 changes: 30 additions & 13 deletions build/register.xml
Original file line number Diff line number Diff line change
@@ -11,10 +11,18 @@
<!-- <menu code='TASK_REQUEST_MANAGEMENT' cat='JOBS' displayName="Request Management" localDisplayName="请求管理">/taskman/request-mgmt</menu>
<menu code='TASK_TASK_MANAGEMENT' cat='JOBS' displayName="Task Management" localDisplayName="任务管理">/taskman/task-mgmt</menu> -->
<menus>
<menu code='TASK_WORKBENCH' cat='JOBS' displayName="Dashboard" localDisplayName="工作台">/taskman/workbench/dashboard</menu>
<menu code='TASK_TEMPLATE_MANAGEMENT' cat='JOBS' displayName="Template Management" localDisplayName="模板管理">/taskman/template-mgmt</menu>
<menu code='TASK_TEMPLATE_GROUP_MANAGEMENT' cat='JOBS' displayName="Template Group Management" localDisplayName="模板组管理">/taskman/template-group</menu>
<menu code='TASK_REQUEST_AUDIT' cat='ADMIN' displayName="Requests Report" localDisplayName="请求报表">/taskman/requestAudit</menu>
<menu code='TASK_WORKBENCH' cat='JOBS' displayName="Dashboard" localDisplayName="工作台">
/taskman/workbench/dashboard
</menu>
<menu code='TASK_TEMPLATE_MANAGEMENT' cat='JOBS' displayName="Template Management" localDisplayName="模板管理">
/taskman/template-mgmt
</menu>
<menu code='TASK_TEMPLATE_GROUP_MANAGEMENT' cat='JOBS' displayName="Template Group Management"
localDisplayName="模板组管理">/taskman/template-group
</menu>
<menu code='TASK_REQUEST_AUDIT' cat='ADMIN' displayName="Requests Report" localDisplayName="请求报表">
/taskman/requestAudit
</menu>
</menus>

<!-- 3.数据模型 - 描述本插件包的数据模型,并且描述和Framework数据模型的关系 -->
@@ -40,13 +48,13 @@

<!-- 5.权限设定 -->
<authorities>
<authority systemRoleName="SUPER_ADMIN" >
<authority systemRoleName="SUPER_ADMIN">
<menu code="TASK_WORKBENCH"/>
<menu code="TASK_TEMPLATE_GROUP_MANAGEMENT"/>
<menu code="TASK_TEMPLATE_MANAGEMENT"/>
<menu code="TASK_REQUEST_MANAGEMENT"/>
<menu code="TASK_TASK_MANAGEMENT"/>
</authority >
</authority>
</authorities>

<!-- 6.运行资源 - 描述部署运行本插件包需要的基础资源(如主机、虚拟机、容器、数据库等) -->
@@ -55,7 +63,12 @@
containerName="{{REPOSITORY}}-{{PLUGIN_VERSION}}"
portBindings="{{ALLOCATE_PORT}}:8099"
volumeBindings="{{BASE_MOUNT_PATH}}/taskman/log:/app/taskman/logs,/etc/localtime:/etc/localtime,{{BASE_MOUNT_PATH}}/certs:/data/certs"
envVariables="TASKMAN_MYSQL_HOST={{DB_HOST}},TASKMAN_MYSQL_PORT={{DB_PORT}},TASKMAN_MYSQL_SCHEMA={{DB_SCHEMA}},TASKMAN_MYSQL_USER={{DB_USER}},TASKMAN_MYSQL_PWD={{DB_PWD}},JWT_SIGNING_KEY={{JWT_SIGNING_KEY}},GATEWAY_URL={{GATEWAY_URL}},SUB_SYSTEM_CODE={{SUB_SYSTEM_CODE}},SUB_SYSTEM_KEY={{SUB_SYSTEM_KEY}},TASKMAN_LOG_LEVEL={{TASKMAN_LOG_LEVEL}},PLUGIN_MODE=yes,TASKMAN_PROCESS_TAGS={{TASKMAN_PROCESS_TAGS}},TASKMAN_MAIL_SENDER_NAME={{TASKMAN_MAIL_SENDER_NAME}},TASKMAN_MAIL_AUTH_SENDER={{TASKMAN_MAIL_AUTH_SENDER}},TASKMAN_MAIL_AUTH_SERVER={{TASKMAN_MAIL_AUTH_SERVER}},TASKMAN_MAIL_AUTH_PWD={{TASKMAN_MAIL_AUTH_PWD}},TASKMAN_MAIL_AUTH_SSL={{TASKMAN_MAIL_AUTH_SSL}},MINIO_ADDRESS={{S3_SERVER_URL}},MINIO_ACCESS_KEY={{S3_ACCESS_KEY}},MINIO_SECRET_KEY={{S3_SECRET_KEY}},ENCRYPT_SEED={{ENCRYPT_SEED}},TASKMAN_WEB_URL={{TASKMAN_WEB_URL}}"
envVariables="TASKMAN_MYSQL_HOST={{DB_HOST}},TASKMAN_MYSQL_PORT={{DB_PORT}},TASKMAN_MYSQL_SCHEMA={{DB_SCHEMA}},TASKMAN_MYSQL_USER={{DB_USER}},
TASKMAN_MYSQL_PWD={{DB_PWD}},JWT_SIGNING_KEY={{JWT_SIGNING_KEY}},GATEWAY_URL={{GATEWAY_URL}},SUB_SYSTEM_CODE={{SUB_SYSTEM_CODE}},
SUB_SYSTEM_KEY={{SUB_SYSTEM_KEY}},TASKMAN_LOG_LEVEL={{TASKMAN_LOG_LEVEL}},PLUGIN_MODE=yes,TASKMAN_PROCESS_TAGS={{TASKMAN_PROCESS_TAGS}},
TASKMAN_MAIL_SENDER_NAME={{TASKMAN_MAIL_SENDER_NAME}},TASKMAN_MAIL_AUTH_SENDER={{TASKMAN_MAIL_AUTH_SENDER}},TASKMAN_MAIL_AUTH_SERVER={{TASKMAN_MAIL_AUTH_SERVER}},
TASKMAN_MAIL_AUTH_PWD={{TASKMAN_MAIL_AUTH_PWD}},TASKMAN_MAIL_AUTH_SSL={{TASKMAN_MAIL_AUTH_SSL}},MINIO_ADDRESS={{S3_SERVER_URL}},MINIO_ACCESS_KEY={{S3_ACCESS_KEY}},
MINIO_SECRET_KEY={{S3_SECRET_KEY}},ENCRYPT_SEED={{ENCRYPT_SEED}},TASKMAN_WEB_URL={{TASKMAN_WEB_URL}},MENU_API_PERMISSION_ENABLE={{MENU_API_PERMISSION_ENABLE}}"
/>
<mysql schema="taskman" initFileName="init.sql" upgradeFileName="upgrade.sql"/>
<s3 bucketName="taskman-file"/>
@@ -64,9 +77,11 @@
<!-- 7.插件列表 - 描述插件包中单个插件的输入和输出 -->
<plugins>
<plugin name="task">
<interface action="create-by-template" path="/taskman/api/v1/plugin/task/create" httpMethod="POST" isAsyncProcessing="Y" type="DYNAMICFORM">
<interface action="create-by-template" path="/taskman/api/v1/plugin/task/create" httpMethod="POST"
isAsyncProcessing="Y" type="DYNAMICFORM">
<inputParameters>
<parameter datatype="string" mappingType="system_variable" mappingSystemVariableName="CALLBACK_URL" required="Y">
<parameter datatype="string" mappingType="system_variable" mappingSystemVariableName="CALLBACK_URL"
required="Y">
callbackUrl
</parameter>
<parameter datatype="string" mappingType="constant" required="N">taskName</parameter>
@@ -83,9 +98,11 @@
<parameter datatype="string" mappingType="context">taskFormOutput</parameter>
</outputParameters>
</interface>
<interface action="create-custom" path="/taskman/api/v1/plugin/task/create/custom" httpMethod="POST" isAsyncProcessing="Y" type="APPROVAL">
<interface action="create-custom" path="/taskman/api/v1/plugin/task/create/custom" httpMethod="POST"
isAsyncProcessing="Y" type="APPROVAL">
<inputParameters>
<parameter datatype="string" mappingType="system_variable" mappingSystemVariableName="CALLBACK_URL" required="Y">
<parameter datatype="string" mappingType="system_variable" mappingSystemVariableName="CALLBACK_URL"
required="Y">
callbackUrl
</parameter>
<parameter datatype="string" mappingType="constant" required="Y">taskName</parameter>
@@ -109,8 +126,8 @@
<parameter datatype="string" mappingType="constant" required="Y">rootDataId</parameter>
<parameter datatype="string" mappingType="constant" required="Y">reportRole</parameter>
<parameter datatype="string" mappingType="constant" required="Y">reportUser</parameter>
<parameter datatype="string" mappingType="context" required="Y">isDraftStatus</parameter>
<parameter datatype="string" mappingType="context" required="N">procInstId</parameter>
<parameter datatype="string" mappingType="context" required="Y">isDraftStatus</parameter>
<parameter datatype="string" mappingType="context" required="N">procInstId</parameter>
</inputParameters>
<outputParameters>
<parameter datatype="string" mappingType="context">errorCode</parameter>
6 changes: 1 addition & 5 deletions taskman-server/api/middleware/response.go
Original file line number Diff line number Diff line change
@@ -25,10 +25,6 @@ func ReturnPageData(c *gin.Context, pageInfo models.PageInfo, contents interface
c.JSON(http.StatusOK, obj)
}

func ReturnEmptyPageData(c *gin.Context) {
c.JSON(http.StatusOK, models.ResponseJson{StatusCode: "OK", Data: models.ResponsePageData{PageInfo: models.PageInfo{StartIndex: 0, PageSize: 0, TotalRows: 0}, Contents: []string{}}})
}

func ReturnApiPermissionError(c *gin.Context) {
ReturnError(c, exterror.New().ApiPermissionDeny)
}
@@ -60,7 +56,7 @@ func ReturnError(c *gin.Context, err error) {
}
errorCode, errorKey, errorMessage := exterror.GetErrorResult(c.GetHeader(AcceptLanguageHeader), err)
log.Logger.Error("Handle error", log.String("statusCode", errorKey), log.String("message", errorMessage))
obj := models.ResponseErrorJson{StatusCode: errorKey, StatusMessage: errorMessage}
obj := models.ResponseErrorJson{StatusCode: strconv.Itoa(errorCode), StatusMessage: errorMessage}
bodyBytes, _ := json.Marshal(obj)
c.Writer.Header().Add("Error-Code", strconv.Itoa(errorCode))
c.Set("responseBody", string(bodyBytes))
2 changes: 1 addition & 1 deletion taskman-server/api/middleware/token.go
Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ func AuthCoreRequestToken() gin.HandlerFunc {
c.JSON(http.StatusUnauthorized, models.EntityResponse{Status: "ERROR", Message: "Core token validate fail "})
c.Abort()
} else {
if models.Config.MenuApiMap.Enable == "true" || strings.TrimSpace(models.Config.MenuApiMap.Enable) == "" {
if models.Config.MenuApiMap.Enable == "true" || strings.TrimSpace(models.Config.MenuApiMap.Enable) == "" || strings.ToUpper(models.Config.MenuApiMap.Enable) == "Y" {
legal := validateMenuApi(GetRequestRoles(c), c.Request.URL.Path, c.Request.Method)
if legal {
c.Next()
2 changes: 1 addition & 1 deletion taskman-server/models/config.go
Original file line number Diff line number Diff line change
@@ -164,7 +164,7 @@ func InitConfig(configFile string) (errMessage string) {
} else {
log.Println("Mail sender disable")
}
if Config.MenuApiMap.Enable == "true" || strings.TrimSpace(Config.MenuApiMap.Enable) == "" {
if Config.MenuApiMap.Enable == "true" || strings.TrimSpace(Config.MenuApiMap.Enable) == "" || strings.ToUpper(Config.MenuApiMap.Enable) == "Y" {
maBytes, err := ioutil.ReadFile(Config.MenuApiMap.File)
if err != nil {
errMessage = "read menu api map file fail," + err.Error()

0 comments on commit 4393121

Please sign in to comment.