shangke 2 年之前
父節點
當前提交
0162c9dd0c

+ 7 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/SysUserType.java

@@ -7,7 +7,13 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum SysUserType implements BaseEnum<String, SysUserType> {
 
-	STUDENT("学生"), EDUCATION("教务老师"), TEACHER("指导老师"), SYSTEM("系统內置"), ADMIN("管理员");
+	STUDENT("学生"),
+	EDUCATION("教务老师"),
+	TEACHER("指导老师"),
+	SYSTEM("系统內置"),
+	ADMIN("管理员"),
+	SCHOOL("学校员工"),
+	;
 
 	private String desc;
 

+ 33 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -23,6 +23,9 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
 
@@ -75,11 +78,37 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 		} else {
 
 			if("EDUCATION".equals(clientId)){
-				clientId = "SYSTEM";
-			}
-			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-				throw new LockedException("用户不存在");
+				//clientId = "SYSTEM";
+				List<String> collect = Arrays.stream(userInfo.getSysUser().getUserType().split(","))
+						.collect(Collectors.toList());
+
+				// 用户身份匹配标识
+				boolean matchFlag = false;
+				// 管理端登录身份
+				if (collect.contains(SysUserType.SYSTEM.getCode())) {
+
+					clientId = SysUserType.SYSTEM.getCode();
+					// 重置匹配状态
+					matchFlag = true;
+				}
+				// 学校员工身份
+				if (collect.contains(SysUserType.SCHOOL.getCode())) {
+					clientId = SysUserType.SCHOOL.getCode();
+					// 重置匹配状态
+					matchFlag = true;
+				}
+				// 管理端登录或学校员工登录身份匹配
+				if (!matchFlag) {
+					throw new LockedException("用户不存在");
+				}
+
+			} else {
+				// 非管理端登录
+				if (!userInfo.getSysUser().getUserType().contains(clientId)) {
+					throw new LockedException("用户不存在");
+				}
 			}
+
 		}
 		
 		// 检查设备

+ 29 - 20
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -1,20 +1,19 @@
 package com.ym.mec.auth.core.handler;
 
-import java.io.IOException;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.entity.SysUserLogin;
+import com.ym.mec.auth.api.entity.SysUserLoginLog;
+import com.ym.mec.auth.api.enums.SysUserType;
+import com.ym.mec.auth.service.SysUserLoginLogService;
+import com.ym.mec.auth.service.SysUserLoginService;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.common.security.SecurityConstants;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.web.WebFeignService;
-
-import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,15 +35,15 @@ import org.springframework.security.oauth2.provider.token.AuthorizationServerTok
 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.entity.SysUserLogin;
-import com.ym.mec.auth.api.entity.SysUserLoginLog;
-import com.ym.mec.auth.service.SysUserLoginLogService;
-import com.ym.mec.auth.service.SysUserLoginService;
-import com.ym.mec.auth.service.SysUserService;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.security.SecurityConstants;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Component
 public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@@ -156,6 +155,16 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 			map.put("tenantId", tenantId);
 			map.put("companyId", sysUser.getTenantId());
 
+			// 设置登录管户端类型
+			if (clientId.toUpperCase().equals(SysUserType.EDUCATION.getCode())) {
+
+				String collect = Arrays.stream(sysUser.getUserType().split(","))
+						.filter(x -> x.equals(SysUserType.EDUCATION.getCode()) || x.equals(SysUserType.SCHOOL.getCode()))
+						.collect(Collectors.joining(","));
+				// 登录客户端类型
+				map.put("clientType", collect);
+			}
+
 			response.setContentType("application/json; charset=utf-8");
 			HttpResponseResult result = new HttpResponseResult(true, HttpStatus.OK.value(), map, "");
 			response.getWriter().write(objectMapper.writeValueAsString(result));