浏览代码

Merge remote-tracking branch 'origin/feature/0427-school' into feature/0427-school

zouxuan 2 年之前
父节点
当前提交
29c782075e

+ 2 - 1
.gitignore

@@ -38,4 +38,5 @@ mvnw.cmd
 **/logback-test.xml
 
 /bin/
-**/logback-spring.xml
+**/logback-spring.xml
+**/*.log

+ 8 - 5
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.cms.controller;
 
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.cms.controller.queryinfo.NewsInformationQueryInfo;
@@ -34,6 +35,9 @@ import java.util.stream.Collectors;
 @Api(tags = "资讯服务")
 public class NewsController extends BaseController {
 
+    // 全局资讯类型
+    private static final List<Integer> globalNewsTypes = Lists.newArrayList(4, 6, 26, 29);
+
     @Autowired
     private SysNewsInformationService sysNewsInformationService;
     @Autowired
@@ -68,7 +72,7 @@ public class NewsController extends BaseController {
     @ApiOperation("资讯列表分页查询")
     @GetMapping(value = "/list")
     public Object getList(NewsInformationQueryInfo queryInfo) {
-        if (queryInfo.getType() == 6 || queryInfo.getType() == 4 || queryInfo.getType() == 26) {
+        if (Objects.nonNull(queryInfo.getType()) && globalNewsTypes.contains(queryInfo.getType())) {
             queryInfo.setTenantId(-1);
         }
         String clientId = queryInfo.getClientId();
@@ -98,8 +102,7 @@ public class NewsController extends BaseController {
     @GetMapping(value = "/queryPage")
     public Object queryPage(NewsInformationQueryInfo queryInfo) {
 
-        if (queryInfo.getType() != null
-                && (queryInfo.getType() == 6 || queryInfo.getType() == 4 || queryInfo.getType() == 26)) {
+        if (Objects.nonNull(queryInfo.getType()) && globalNewsTypes.contains(queryInfo.getType())) {
             queryInfo.setTenantId(-1);
         }
 
@@ -152,7 +155,7 @@ public class NewsController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('news/add')")
     public Object add(SysNewsInformation newsInfo) {
 
-        if (newsInfo.getType() == 6 || newsInfo.getType() == 4 || newsInfo.getType() == 26) {
+        if (Objects.nonNull(newsInfo.getType()) && globalNewsTypes.contains(newsInfo.getType())) {
             newsInfo.setTenantId(-1);
         }
         /*if (newsInfo.getContent().length() > 7999) {
@@ -175,7 +178,7 @@ public class NewsController extends BaseController {
         if (newsInfo.getType() == null) {
             newsInfo.setType(originNewsInfo.getType());
         }
-        if (newsInfo.getType() == 6 || newsInfo.getType() == 4 || newsInfo.getType() == 26) {
+        if (Objects.nonNull(newsInfo.getType()) && globalNewsTypes.contains(newsInfo.getType())) {
             newsInfo.setTenantId(-1);
         }
         return succeed(sysNewsInformationService.update(newsInfo));

+ 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;
 

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -59,9 +59,9 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		boolean isRegister = StringUtils.equals("1", isLessee) || StringUtils.equals("true", isLessee);
 
 		String clientId = request.getParameter("clientId").toUpperCase();
-		if ("EDUCATION".equals(clientId)) {
+		/*if ("EDUCATION".equals(clientId)) {
 			clientId = "SYSTEM";
-		}
+		}*/
 		String deviceNum = request.getParameter("deviceNum");
 
 		principal = principal.trim();

+ 34 - 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,38 @@ 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(","))
+						.map(String::toUpperCase)
+						.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.SYSTEM.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));

+ 30 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -1,11 +1,14 @@
 package com.ym.mec.auth.core.provider;
 
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.web.controller.queryInfo.QRLoginDto;
 import com.ym.mec.common.redis.service.RedisCache;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
 import org.springframework.security.authentication.LockedException;
@@ -46,7 +49,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
+	public UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
 		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
 		if (loginEntity == null) {
 			throw new BadCredentialsException("Bad credentials");
@@ -88,6 +91,12 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 		}
 
 		if (userInfo == null) {
+
+			// 强制默认管理登录类型
+			if ("EDUCATION".equals(clientId)) {
+				clientId = "SYSTEM";
+			}
+
 			if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
 				throw new LockedException("用户不存在");
 			}
@@ -102,6 +111,25 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			if (user == null) {
 				throw new LockedException("用户不存在");
 			}
+
+			// 管理端登录或学校端登录
+			if(SysUserType.EDUCATION.getCode().equals(clientId.toUpperCase())){
+
+				List<String> collect = Arrays.stream(userInfo.getSysUser().getUserType().split(","))
+						.map(String::toUpperCase)
+						.collect(Collectors.toList());
+
+				// 管理端登录身份
+				if (collect.contains(SysUserType.SYSTEM.getCode())) {
+					clientId = SysUserType.SYSTEM.getCode();
+				}
+
+				// 学校员工身份
+				if (collect.contains(SysUserType.SCHOOL.getCode())) {
+					clientId = SysUserType.SCHOOL.getCode();
+				}
+			}
+
 			//如果机构不一致,不允许跨机构注册
 //			if(loginEntity.getTenantId() != null && loginEntity.getTenantId() != 0 &&
 //					!loginEntity.getTenantId().equals(user.getTenantId())){

+ 1 - 1
mec-common/common-core/pom.xml

@@ -64,7 +64,7 @@
 		<dependency>
 			<groupId>org.springframework.security.oauth</groupId>
 			<artifactId>spring-security-oauth2</artifactId>
-			<version>2.2.1.RELEASE</version>
+			<version>2.3.3.RELEASE</version>
 		</dependency>
 
 		<dependency>