Commit 1cd6092a authored by luojun's avatar luojun

同步门户登录

parent 949ab1a0
...@@ -2,6 +2,7 @@ package admin.modules.system.service.mapper; ...@@ -2,6 +2,7 @@ package admin.modules.system.service.mapper;
import admin.base.CommonMapper; import admin.base.CommonMapper;
import admin.modules.system.domain.SysUsersRoles; import admin.modules.system.domain.SysUsersRoles;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
...@@ -13,4 +14,5 @@ import org.springframework.stereotype.Repository; ...@@ -13,4 +14,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface SysUsersRolesMapper extends CommonMapper<SysUsersRoles> { public interface SysUsersRolesMapper extends CommonMapper<SysUsersRoles> {
void deleteByUserId(Long id); void deleteByUserId(Long id);
SysUsersRoles findById(@Param("id")Long id);
} }
...@@ -19,8 +19,10 @@ import admin.annotation.Log; ...@@ -19,8 +19,10 @@ import admin.annotation.Log;
import admin.annotation.rest.AnonymousDeleteMapping; import admin.annotation.rest.AnonymousDeleteMapping;
import admin.annotation.rest.AnonymousGetMapping; import admin.annotation.rest.AnonymousGetMapping;
import admin.annotation.rest.AnonymousPostMapping; import admin.annotation.rest.AnonymousPostMapping;
import admin.config.RedisCacheConfigPath; import admin.config.RedisCacheConfigPath;
import admin.config.RsaProperties; import admin.config.RsaProperties;
import admin.exception.BadRequestException; import admin.exception.BadRequestException;
import admin.model.syncToken.GetTokenRep; import admin.model.syncToken.GetTokenRep;
import admin.model.syncToken.VerifyRep; import admin.model.syncToken.VerifyRep;
...@@ -137,7 +139,7 @@ public class AuthorizationController { ...@@ -137,7 +139,7 @@ public class AuthorizationController {
log.error("门户跳转获取token失败"); log.error("门户跳转获取token失败");
return ResponseEntity.badRequest().body(rep); return ResponseEntity.badRequest().body(rep);
} else { } else {
redisUtils.del(RedisCacheConfigPath.loginUserCacheKey); redisUtils.del(RedisCacheConfigPath.syncTokenGetKey);
redisUtils.set(RedisCacheConfigPath.syncTokenGetKey, rep.getAccess_token(), 1, TimeUnit.HOURS); redisUtils.set(RedisCacheConfigPath.syncTokenGetKey, rep.getAccess_token(), 1, TimeUnit.HOURS);
} }
syncToken=rep.getAccess_token(); syncToken=rep.getAccess_token();
...@@ -157,36 +159,32 @@ public class AuthorizationController { ...@@ -157,36 +159,32 @@ public class AuthorizationController {
} }
//模拟用户登录,跳转前端首页 //模拟用户登录,跳转前端首页
log.info("模拟用户登录,跳转前端首页"); log.info("模拟用户登录,跳转前端首页");
String jwt = (String) redisUtils.get(String.format(RedisCacheConfigPath.loginUserCacheKey, userName)); UserDto userDto = userService.findByName(userName);
JwtUserDto jwtUserDto = JSONUtil.toBean(jwt, JwtUserDto.class); log.info("userDto:{}", JSONUtil.toJsonStr(userDto));
if(ObjectUtil.isNull(jwtUserDto)||jwt==null||jwtUserDto.getToken()==null) { if (userDto == null || userDto.getSyncPassword() == null) {
UserDto userDto = userService.findByName(userName); log.error("未有同步该用户");
log.info("userDto:{}", JSONUtil.toJsonStr(userDto)); return ResponseEntity.badRequest().body(userDto);
if (userDto == null || userDto.getSyncPassword() == null) { }
log.error("未有同步该用户"); UsernamePasswordAuthenticationToken authenticationToken =
return ResponseEntity.badRequest().body(userDto); new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getSyncPassword());
} Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
UsernamePasswordAuthenticationToken authenticationToken = SecurityContextHolder.getContext().setAuthentication(authentication);
new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getSyncPassword()); // 生成令牌
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); String token1 = tokenProvider.createToken(authentication);
SecurityContextHolder.getContext().setAuthentication(authentication); final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal();
// 生成令牌 // 保存在线信息
String token1 = tokenProvider.createToken(authentication); onlineUserService.save(jwtUserDto, token1, request);
jwtUserDto = (JwtUserDto) authentication.getPrincipal(); if (loginProperties.isSingleLogin()) {
// 保存在线信息 //踢掉之前已经登录的token
onlineUserService.save(jwtUserDto, token1, request); onlineUserService.checkLoginOnUser(userDto.getUsername(), token1);
if (loginProperties.isSingleLogin()) {
//踢掉之前已经登录的token
onlineUserService.checkLoginOnUser(userDto.getUsername(), token1);
}
jwtUserDto.setToken(token1);
//记录登录用户信息
redisUtils.del(String.format(RedisCacheConfigPath.loginUserCacheKey, jwtUserDto.getUsername()));
redisUtils.set(String.format(RedisCacheConfigPath.loginUserCacheKey, jwtUserDto.getUsername()), JSONObject.toJSONString(jwtUserDto), 1, TimeUnit.HOURS);
} }
jwtUserDto.setToken("Bearer "+token1);
//记录登录用户信息
redisUtils.del(String.format(RedisCacheConfigPath.loginUserCacheKey, jwtUserDto.getUsername()));
redisUtils.set(String.format(RedisCacheConfigPath.loginUserCacheKey, jwtUserDto.getUsername()), JSONObject.toJSONString(jwtUserDto), 1, TimeUnit.HOURS);
log.info("跳转前端首页--token:{}",jwtUserDto.getToken()); log.info("跳转前端首页--token:{}",jwtUserDto.getToken());
httpServletResponse.setHeader("authorization","Bearer "+jwtUserDto.getToken()); httpServletResponse.setHeader("authorization",jwtUserDto.getToken());
httpServletResponse.sendRedirect("https://qy.justh5.com/dashboard"); httpServletResponse.sendRedirect("http://qytydp.qyting.com/dashboard?token="+jwtUserDto.getToken());
return null; return null;
} }
......
...@@ -28,12 +28,14 @@ import admin.modules.system.service.*; ...@@ -28,12 +28,14 @@ import admin.modules.system.service.*;
import admin.modules.system.service.dto.RoleSmallDto; import admin.modules.system.service.dto.RoleSmallDto;
import admin.modules.system.service.dto.UserDto; import admin.modules.system.service.dto.UserDto;
import admin.modules.system.service.dto.UserQueryCriteria; import admin.modules.system.service.dto.UserQueryCriteria;
import admin.modules.system.service.mapper.SysUsersRolesMapper;
import admin.modules.system.service.mapper.UserMapper; import admin.modules.system.service.mapper.UserMapper;
import admin.rest.module.UserSyncRep; import admin.rest.module.UserSyncRep;
import admin.rest.module.UserSyncReq; import admin.rest.module.UserSyncReq;
import admin.utils.PageUtil; import admin.utils.PageUtil;
import admin.utils.RsaUtils; import admin.utils.RsaUtils;
import admin.utils.SecurityUtils; import admin.utils.SecurityUtils;
import admin.utils.enums.CodeEnum;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -76,8 +78,8 @@ public class UserController { ...@@ -76,8 +78,8 @@ public class UserController {
private final DataService dataService; private final DataService dataService;
private final DeptService deptService; private final DeptService deptService;
private final RoleService roleService; private final RoleService roleService;
// private final VerifyService verifyService;
private final SysUsersRolesService sysUsersRolesService; private final SysUsersRolesService sysUsersRolesService;
private final SysUsersRolesMapper sysUsersRolesMapper;
@Log("导出用户数据") @Log("导出用户数据")
@ApiOperation("导出用户数据") @ApiOperation("导出用户数据")
...@@ -173,15 +175,15 @@ public class UserController { ...@@ -173,15 +175,15 @@ public class UserController {
resources.setJobId(job.getId()); resources.setJobId(job.getId());
//查询收费员岗位是否已经被其他收费员占用 //查询收费员岗位是否已经被其他收费员占用
if (roleId == 4) { if (roleId == 4) {
// User user = userService.findByJobId(resources.getJobId()); // User user = userService.findByJobId(resources.getJobId());
//新增 //新增
// if (user != null && resources != null && resources.getId() == null){ // if (user != null && resources != null && resources.getId() == null){
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername())); // throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// } // }
// //修改 // //修改
// if (user != null && resources.getId() != null && resources.getId() > 0 && !user.getId().equals(resources.getId())) { // if (user != null && resources.getId() != null && resources.getId() > 0 && !user.getId().equals(resources.getId())) {
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername())); // throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// } // }
List<User> users = userService.findListByJobId(resources.getJobId()); List<User> users = userService.findListByJobId(resources.getJobId());
if (users!=null&&users.size()>=2){ if (users!=null&&users.size()>=2){
throw new BadRequestException(String.format("存在岗位被两个收费员%s占用,请更换", users.get(0).getUsername()+" "+users.get(1).getUsername())); throw new BadRequestException(String.format("存在岗位被两个收费员%s占用,请更换", users.get(0).getUsername()+" "+users.get(1).getUsername()));
...@@ -295,7 +297,6 @@ public class UserController { ...@@ -295,7 +297,6 @@ public class UserController {
if(!passwordEncoder.matches(password, userDto.getPassword())){ if(!passwordEncoder.matches(password, userDto.getPassword())){
throw new BadRequestException("密码错误"); throw new BadRequestException("密码错误");
} }
// verifyService.validated(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey() + user.getEmail(), code);
userService.updateEmail(userDto.getUsername(),user.getEmail()); userService.updateEmail(userDto.getUsername(),user.getEmail());
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
...@@ -360,9 +361,19 @@ public class UserController { ...@@ -360,9 +361,19 @@ public class UserController {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(userVO.getPassword()); String encode = bCryptPasswordEncoder.encode(userVO.getPassword());
user.setPassword(encode); user.setPassword(encode);
user.setDeptId(16L);
user.setNickName(userVO.getRealName()==null?"": userVO.getRealName()); user.setNickName(userVO.getRealName()==null?"": userVO.getRealName());
user.setEnabled(userVO.getIsActive()); user.setEnabled(userVO.getIsActive());
userMapper.insert(user); userMapper.insert(user);
//菜单权限
User username = userMapper.findByUsername(user.getUsername());
SysUsersRoles usersRoles = sysUsersRolesMapper.findById(username.getId());
if(usersRoles==null) {
SysUsersRoles sysUsersRoles = new SysUsersRoles();
sysUsersRoles.setUserId(username.getId());
sysUsersRoles.setRoleId(1L);
sysUsersRolesMapper.insert(sysUsersRoles);
}
}catch (Exception e){ }catch (Exception e){
userRep.setUserId(userVO.getUserId()); userRep.setUserId(userVO.getUserId());
userRep.setReason("同步用户信息失败。optType为CREATE"); userRep.setReason("同步用户信息失败。optType为CREATE");
......
...@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service; ...@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
public class SyncTokenServiceImpl implements SyncTokenService { public class SyncTokenServiceImpl implements SyncTokenService {
@Override @Override
public GetTokenRep getToken() { public GetTokenRep getToken() {
String url="http://36.138.42.150:5065/oauth/token"; String url="http://36.212.226.237:5065/oauth/token";
//入参 //入参
String grantType = "client_credentials"; String grantType = "client_credentials";
String scope = "all"; String scope = "all";
...@@ -43,11 +43,11 @@ public class SyncTokenServiceImpl implements SyncTokenService { ...@@ -43,11 +43,11 @@ public class SyncTokenServiceImpl implements SyncTokenService {
@Override @Override
public VerifyRep verify(String syncToken, String token) { public VerifyRep verify(String syncToken, String token) {
// 门户接口URL // 门户接口URL
String url = "http://36.138.42.150:5065/oauth/verify"; // 请替换为你的门户接口实际URL String url = "http://36.212.226.237:5065/oauth/verify"; // 请替换为你的门户接口实际URL
// 请求头 // 请求头
String authorizationHeader = "Bearer " + syncToken; // 请替换为你的客户端token String authorizationHeader = "Bearer " + syncToken; // 请替换为你的客户端token
String contentTypeHeader = "application/json"; String contentTypeHeader = "application/json";
// 请求体 // 请求体
VerifyReq verifyReq = new VerifyReq(); VerifyReq verifyReq = new VerifyReq();
verifyReq.setUnifiedUserToken(token); verifyReq.setUnifiedUserToken(token);
log.info("门户检验token合法性,url:{},入参:verifyReq:{}",url,verifyReq); log.info("门户检验token合法性,url:{},入参:verifyReq:{}",url,verifyReq);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="admin.modules.system.service.mapper.SysUsersRolesMapper">
<select id="deleteByUserId" >
DELETE FROM sys_users_roles WHERE user_id=#{id}
</select>
<select id="findById" resultType="admin.modules.system.domain.SysUsersRoles">
select * from sys_users_roles where user_id=#{id}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment