Commit 1cd6092a authored by luojun's avatar luojun

同步门户登录

parent 949ab1a0
......@@ -2,6 +2,7 @@ package admin.modules.system.service.mapper;
import admin.base.CommonMapper;
import admin.modules.system.domain.SysUsersRoles;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
......@@ -13,4 +14,5 @@ import org.springframework.stereotype.Repository;
@Repository
public interface SysUsersRolesMapper extends CommonMapper<SysUsersRoles> {
void deleteByUserId(Long id);
SysUsersRoles findById(@Param("id")Long id);
}
......@@ -19,8 +19,10 @@ import admin.annotation.Log;
import admin.annotation.rest.AnonymousDeleteMapping;
import admin.annotation.rest.AnonymousGetMapping;
import admin.annotation.rest.AnonymousPostMapping;
import admin.config.RedisCacheConfigPath;
import admin.config.RsaProperties;
import admin.exception.BadRequestException;
import admin.model.syncToken.GetTokenRep;
import admin.model.syncToken.VerifyRep;
......@@ -137,7 +139,7 @@ public class AuthorizationController {
log.error("门户跳转获取token失败");
return ResponseEntity.badRequest().body(rep);
} else {
redisUtils.del(RedisCacheConfigPath.loginUserCacheKey);
redisUtils.del(RedisCacheConfigPath.syncTokenGetKey);
redisUtils.set(RedisCacheConfigPath.syncTokenGetKey, rep.getAccess_token(), 1, TimeUnit.HOURS);
}
syncToken=rep.getAccess_token();
......@@ -157,36 +159,32 @@ public class AuthorizationController {
}
//模拟用户登录,跳转前端首页
log.info("模拟用户登录,跳转前端首页");
String jwt = (String) redisUtils.get(String.format(RedisCacheConfigPath.loginUserCacheKey, userName));
JwtUserDto jwtUserDto = JSONUtil.toBean(jwt, JwtUserDto.class);
if(ObjectUtil.isNull(jwtUserDto)||jwt==null||jwtUserDto.getToken()==null) {
UserDto userDto = userService.findByName(userName);
log.info("userDto:{}", JSONUtil.toJsonStr(userDto));
if (userDto == null || userDto.getSyncPassword() == null) {
log.error("未有同步该用户");
return ResponseEntity.badRequest().body(userDto);
}
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getSyncPassword());
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
SecurityContextHolder.getContext().setAuthentication(authentication);
// 生成令牌
String token1 = tokenProvider.createToken(authentication);
jwtUserDto = (JwtUserDto) authentication.getPrincipal();
// 保存在线信息
onlineUserService.save(jwtUserDto, token1, request);
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);
UserDto userDto = userService.findByName(userName);
log.info("userDto:{}", JSONUtil.toJsonStr(userDto));
if (userDto == null || userDto.getSyncPassword() == null) {
log.error("未有同步该用户");
return ResponseEntity.badRequest().body(userDto);
}
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(userDto.getUsername(), userDto.getSyncPassword());
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
SecurityContextHolder.getContext().setAuthentication(authentication);
// 生成令牌
String token1 = tokenProvider.createToken(authentication);
final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal();
// 保存在线信息
onlineUserService.save(jwtUserDto, token1, request);
if (loginProperties.isSingleLogin()) {
//踢掉之前已经登录的token
onlineUserService.checkLoginOnUser(userDto.getUsername(), token1);
}
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());
httpServletResponse.setHeader("authorization","Bearer "+jwtUserDto.getToken());
httpServletResponse.sendRedirect("https://qy.justh5.com/dashboard");
httpServletResponse.setHeader("authorization",jwtUserDto.getToken());
httpServletResponse.sendRedirect("http://qytydp.qyting.com/dashboard?token="+jwtUserDto.getToken());
return null;
}
......
......@@ -28,12 +28,14 @@ import admin.modules.system.service.*;
import admin.modules.system.service.dto.RoleSmallDto;
import admin.modules.system.service.dto.UserDto;
import admin.modules.system.service.dto.UserQueryCriteria;
import admin.modules.system.service.mapper.SysUsersRolesMapper;
import admin.modules.system.service.mapper.UserMapper;
import admin.rest.module.UserSyncRep;
import admin.rest.module.UserSyncReq;
import admin.utils.PageUtil;
import admin.utils.RsaUtils;
import admin.utils.SecurityUtils;
import admin.utils.enums.CodeEnum;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
......@@ -76,8 +78,8 @@ public class UserController {
private final DataService dataService;
private final DeptService deptService;
private final RoleService roleService;
// private final VerifyService verifyService;
private final SysUsersRolesService sysUsersRolesService;
private final SysUsersRolesMapper sysUsersRolesMapper;
@Log("导出用户数据")
@ApiOperation("导出用户数据")
......@@ -173,15 +175,15 @@ public class UserController {
resources.setJobId(job.getId());
//查询收费员岗位是否已经被其他收费员占用
if (roleId == 4) {
// User user = userService.findByJobId(resources.getJobId());
//新增
// if (user != null && resources != null && resources.getId() == null){
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// }
// //修改
// if (user != null && resources.getId() != null && resources.getId() > 0 && !user.getId().equals(resources.getId())) {
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// }
// User user = userService.findByJobId(resources.getJobId());
//新增
// if (user != null && resources != null && resources.getId() == null){
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// }
// //修改
// if (user != null && resources.getId() != null && resources.getId() > 0 && !user.getId().equals(resources.getId())) {
// throw new BadRequestException(String.format("岗位已经被%s占用,请更换", user.getUsername()));
// }
List<User> users = userService.findListByJobId(resources.getJobId());
if (users!=null&&users.size()>=2){
throw new BadRequestException(String.format("存在岗位被两个收费员%s占用,请更换", users.get(0).getUsername()+" "+users.get(1).getUsername()));
......@@ -295,7 +297,6 @@ public class UserController {
if(!passwordEncoder.matches(password, userDto.getPassword())){
throw new BadRequestException("密码错误");
}
// verifyService.validated(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey() + user.getEmail(), code);
userService.updateEmail(userDto.getUsername(),user.getEmail());
return new ResponseEntity<>(HttpStatus.OK);
}
......@@ -360,9 +361,19 @@ public class UserController {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(userVO.getPassword());
user.setPassword(encode);
user.setDeptId(16L);
user.setNickName(userVO.getRealName()==null?"": userVO.getRealName());
user.setEnabled(userVO.getIsActive());
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){
userRep.setUserId(userVO.getUserId());
userRep.setReason("同步用户信息失败。optType为CREATE");
......
......@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
public class SyncTokenServiceImpl implements SyncTokenService {
@Override
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 scope = "all";
......@@ -43,11 +43,11 @@ public class SyncTokenServiceImpl implements SyncTokenService {
@Override
public VerifyRep verify(String syncToken, String token) {
// 门户接口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 contentTypeHeader = "application/json";
// 请求体
// 请求体
VerifyReq verifyReq = new VerifyReq();
verifyReq.setUnifiedUserToken(token);
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