Quellcode durchsuchen

日志权限控制:仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup

xuxueli vor 6 Jahren
Ursprung
Commit
211abb985b

+ 1 - 7
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java Datei anzeigen

@@ -1,13 +1,10 @@
1 1
 package com.xxl.job.admin.controller;
2 2
 
3
-import com.xxl.job.admin.core.exception.XxlJobException;
4 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
5 4
 import com.xxl.job.admin.core.model.XxlJobLogGlue;
6
-import com.xxl.job.admin.core.model.XxlJobUser;
7 5
 import com.xxl.job.admin.core.util.I18nUtil;
8 6
 import com.xxl.job.admin.dao.XxlJobInfoDao;
9 7
 import com.xxl.job.admin.dao.XxlJobLogGlueDao;
10
-import com.xxl.job.admin.service.LoginService;
11 8
 import com.xxl.job.core.biz.model.ReturnT;
12 9
 import com.xxl.job.core.glue.GlueTypeEnum;
13 10
 import org.springframework.stereotype.Controller;
@@ -46,10 +43,7 @@ public class JobCodeController {
46 43
 		}
47 44
 
48 45
 		// valid permission
49
-		XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
50
-		if (!loginUser.validPermission(jobInfo.getJobGroup())) {
51
-			throw new XxlJobException(I18nUtil.getString("system_permission_limit"));
52
-		}
46
+		JobInfoController.validPermission(request, jobInfo.getJobGroup());
53 47
 
54 48
 		// Glue类型-字典
55 49
 		model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());

+ 6 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java Datei anzeigen

@@ -83,6 +83,12 @@ public class JobInfoController {
83 83
 		}
84 84
 		return jobGroupList;
85 85
 	}
86
+	public static void validPermission(HttpServletRequest request, int jobGroup) {
87
+		XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY);
88
+		if (!loginUser.validPermission(jobGroup)) {
89
+			throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
90
+		}
91
+	}
86 92
 	
87 93
 	@RequestMapping("/pageList")
88 94
 	@ResponseBody

+ 14 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java Datei anzeigen

@@ -61,7 +61,14 @@ public class JobLogController {
61 61
 		// 任务
62 62
 		if (jobId > 0) {
63 63
 			XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
64
+			if (jobInfo == null) {
65
+				throw new RuntimeException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid"));
66
+			}
67
+
64 68
 			model.addAttribute("jobInfo", jobInfo);
69
+
70
+			// valid permission
71
+			JobInfoController.validPermission(request, jobInfo.getJobGroup());
65 72
 		}
66 73
 
67 74
 		return "joblog/joblog.index";
@@ -76,9 +83,13 @@ public class JobLogController {
76 83
 	
77 84
 	@RequestMapping("/pageList")
78 85
 	@ResponseBody
79
-	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
80
-			@RequestParam(required = false, defaultValue = "10") int length,
81
-			int jobGroup, int jobId, int logStatus, String filterTime) {
86
+	public Map<String, Object> pageList(HttpServletRequest request,
87
+										@RequestParam(required = false, defaultValue = "0") int start,
88
+										@RequestParam(required = false, defaultValue = "10") int length,
89
+										int jobGroup, int jobId, int logStatus, String filterTime) {
90
+
91
+		// valid permission
92
+		JobInfoController.validPermission(request, jobGroup);	// 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup
82 93
 		
83 94
 		// parse param
84 95
 		Date triggerTimeStart = null;

+ 5 - 0
xxl-job-admin/src/main/resources/static/js/joblog.index.1.js Datei anzeigen

@@ -216,6 +216,11 @@ $(function() {
216 216
             }
217 217
         }
218 218
 	});
219
+    logTable.on('xhr.dt',function(e, settings, json, xhr) {
220
+        if (json.code && json.code != 200) {
221
+            layer.msg( json.msg || I18n.system_api_error );
222
+        }
223
+    });
219 224
 	
220 225
 	// logTips alert
221 226
 	$('#joblog_list').on('click', '.logTips', function(){

+ 3 - 1
xxl-job-admin/src/main/resources/templates/joblog/joblog.index.ftl Datei anzeigen

@@ -30,7 +30,9 @@
30 30
  					<div class="input-group">
31 31
 	                	<span class="input-group-addon">${I18n.jobinfo_field_jobgroup}</span>
32 32
                 		<select class="form-control" id="jobGroup"  paramVal="<#if jobInfo?exists>${jobInfo.jobGroup}</#if>" >
33
-                            <option value="0" >${I18n.system_all}</option>
33
+                            <#if Request["XXL_JOB_LOGIN_IDENTITY"].role == 1>
34
+                                <option value="0" >${I18n.system_all}</option>  <#-- 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup -->
35
+                            </#if>
34 36
                 			<#list JobGroupList as group>
35 37
                 				<option value="${group.id}" >${group.title}</option>
36 38
                 			</#list>