Browse Source

单点登录接口

yuchengwei 8 months ago
parent
commit
585535c453

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -38,6 +38,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/sys/user/getJwt").permitAll()
+                .antMatchers("/sys/user/createUserAndGetJwt").permitAll()
                 .antMatchers("/sys/user/refreshJwt").permitAll()
                 .antMatchers("/sys/user/checkToken").permitAll()
                 //.antMatchers("/sys/user/getUserOrgMenu").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -81,6 +81,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
                 || matchers("/sys/user/getJwt", request)
+                || matchers("/sys/user/createUserAndGetJwt", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/user/checkToken", request)
                 || matchers("/sys/user/getUserOrgMenu", request)

+ 59 - 14
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -7,10 +7,7 @@ import com.diagbot.dto.HospitalLoginDTO;
 import com.diagbot.dto.JwtDTO;
 import com.diagbot.dto.LoginDTO;
 import com.diagbot.dto.UserLoginDTO;
-import com.diagbot.entity.HospitalInfo;
-import com.diagbot.entity.JWT;
-import com.diagbot.entity.JwtStore;
-import com.diagbot.entity.SysUser;
+import com.diagbot.entity.*;
 import com.diagbot.entity.wrapper.SysMenuWrapper;
 import com.diagbot.enums.ConstantEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -19,22 +16,15 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ServiceErrorCode;
 import com.diagbot.service.impl.SysUserServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
+import com.diagbot.vo.UserSaveVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.factory.PasswordEncoderFactories;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -57,6 +47,9 @@ public class SysUserFacade extends SysUserServiceImpl {
     @Autowired
     private HospitalInfoFacade hospitalInfoFacade;
 
+    @Autowired
+    private SysUserRoleFacade sysUserRoleFacade;
+
     /**
      * 获取jwt
      *
@@ -238,6 +231,9 @@ public class SysUserFacade extends SysUserServiceImpl {
         List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId());
         Map<Long, List<SysMenuWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");
         List<SysMenuWrapper> menuRes = menuMap.get(-1L);
+//        if (StringUtil.isNotEmpty(user.getRemark())){
+//            menuRes = menuRes.stream().filter(e -> "CDSS-YXSYK".equalsIgnoreCase(e.getCode())).collect(Collectors.toList());
+//        }
         if (ListUtil.isNotEmpty(menuRes)){
             for (SysMenuWrapper bean : menuRes) {
                 getSonMenu(bean, menuMap);
@@ -289,4 +285,53 @@ public class SysUserFacade extends SysUserServiceImpl {
         return map;
     }
 
+    /**
+     * 注册
+     *
+     * @param userSaveVO 参数
+     * @return 用户信息
+     */
+    public JwtDTO createUserAndGetJwt(UserSaveVO userSaveVO) {
+        SysUser user = new SysUser();
+        BeanUtil.copyProperties(userSaveVO, user);
+        user.setGmtCreate(new Date());
+        user.setPassword("a123456");
+
+        QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.eq("username", user.getUsername())
+                .eq("status", StatusEnum.Enable.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        SysUser bean = this.getOne(userQueryWrapper, false);
+        if (bean == null) {
+
+            PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
+            String entryPassword = passwordEncoder.encode(user.getPassword());
+            user.setPassword(entryPassword);
+//            user.setPhone(userSaveVO.getUsername());
+            this.save(user);
+
+            SysUserRole userRole = new SysUserRole();
+            userRole.setUserId(user.getId());
+            userRole.setRoleId(1L);
+            userRole.setGmtCreate(new Date());
+            sysUserRoleFacade.save(userRole);
+        }
+        JwtDTO data = new JwtDTO();
+        JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
+                "password", user.getUsername(), user.getPassword());
+        if (null == jwt) {
+            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
+        }
+        data.setAccessToken(jwt.getAccess_token());
+        data.setRefreshToken(jwt.getRefresh_token());
+        data.setType(user.getType());
+        data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+        //token存入redis
+        JwtStore jwtStore = new JwtStore();
+        jwtStore.setAccessToken(jwt.getAccess_token());
+        jwtStore.setRefreshToken(jwt.getRefresh_token());
+        tokenFacade.createToken(jwtStore);
+        return data;
+    }
+
 }

+ 20 - 0
src/main/java/com/diagbot/vo/UserSaveVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 图片验证码验证输入信息
+ * @author: gaodm
+ * @time: 2018/9/3 15:38
+ */
+@Getter
+@Setter
+public class UserSaveVO {
+
+    private String password;
+    @NotBlank(message = "请输入手机号")
+    private String username;
+}

+ 11 - 0
src/main/java/com/diagbot/web/SysUserController.java

@@ -10,6 +10,7 @@ import com.diagbot.facade.TokenFacade;
 import com.diagbot.vo.JwtVO;
 import com.diagbot.vo.ModifyPasswordVO;
 import com.diagbot.vo.UserLoginVO;
+import com.diagbot.vo.UserSaveVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +59,16 @@ public class SysUserController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "创建用户并登录获取jwt[by:yucw]",
+            notes = "username:用户名,必填<br>" +
+                    "password:密码, 非必填, 默认密码:dc483e80a7a0bd9ef71d8cf973673924<br> ")
+    @PostMapping("/createUserAndGetJwt")
+    @SysLogger("createUserAndGetJwt")
+    public RespDTO<JwtDTO> createUserAndGetJwt(@RequestBody UserSaveVO userSaveVO) {
+        JwtDTO data = userFacade.createUserAndGetJwt(userSaveVO);
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "刷新jwt[by:gaodm]",
             notes = "refreshToken:刷新令牌,必填<br>")
     @PostMapping("/refreshJwt")