Merge branch 'lixuetao'
This commit is contained in:
@@ -507,13 +507,13 @@ public class LoginRestController {
|
|||||||
@GetMapping("/ssoLogin")
|
@GetMapping("/ssoLogin")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@ApiOperation(value = "SSO,根据Code返回用户信息")
|
@ApiOperation(value = "SSO,根据Code返回用户信息")
|
||||||
public ResponseMessage ssoLogin(String code, HttpServletRequest request){
|
public ResponseMessage ssoLogin(String code, String redirectUrl, HttpServletRequest request){
|
||||||
if (StrUtil.isBlank(code)) {
|
if (StrUtil.isBlank(code)) {
|
||||||
return Result.error("无法单点登录,code为空");
|
return Result.error("无法单点登录,code为空");
|
||||||
}
|
}
|
||||||
String username = userService.ssoLogin(code);
|
String account = userService.ssoLogin(code, redirectUrl);
|
||||||
|
|
||||||
UsernamePasswordToken token = new UsernamePasswordToken(username);
|
UsernamePasswordToken token = new UsernamePasswordToken(account);
|
||||||
|
|
||||||
return login(request, token);
|
return login(request, token);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -716,9 +716,11 @@ public class IReportServiceImpl extends ServiceImpl<ReportDao, ReportEntity>
|
|||||||
} else {
|
} else {
|
||||||
reportDetailVo.setDownPower(0);
|
reportDetailVo.setDownPower(0);
|
||||||
//查看申请权限表的权限
|
//查看申请权限表的权限
|
||||||
|
List<Integer> powerList = new ArrayList<>();
|
||||||
|
powerList.add(PREVIEW_DOWNLOAD);
|
||||||
|
powerList.add(DOWNLOAD);
|
||||||
LambdaQueryWrapper<PowerApply> powerApplyLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<PowerApply> powerApplyLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
powerApplyLambdaQueryWrapper.eq(PowerApply::getPower, 3);
|
powerApplyLambdaQueryWrapper.in(PowerApply::getPower, powerList);
|
||||||
powerApplyLambdaQueryWrapper.eq(PowerApply::getPower, 2);
|
|
||||||
List<PowerApply> list = iPowerApplyService.list(powerApplyLambdaQueryWrapper);
|
List<PowerApply> list = iPowerApplyService.list(powerApplyLambdaQueryWrapper);
|
||||||
if (CollectionUtils.isNotEmpty(list)) {
|
if (CollectionUtils.isNotEmpty(list)) {
|
||||||
list.forEach(powerApply -> {
|
list.forEach(powerApply -> {
|
||||||
|
|||||||
@@ -221,7 +221,9 @@ public class SyncIAMTimer {
|
|||||||
userEO.setUsname(userVoIAM.getCnName());
|
userEO.setUsname(userVoIAM.getCnName());
|
||||||
userEO.setStatus(userVoIAM.getStatus());
|
userEO.setStatus(userVoIAM.getStatus());
|
||||||
userEO.setLevelId(userVoIAM.getLevelID());
|
userEO.setLevelId(userVoIAM.getLevelID());
|
||||||
userEO.setLevelId(userVoIAM.getLevelName());
|
userEO.setLevelName(userVoIAM.getLevelName());
|
||||||
|
userEO.setEmployeeTypeId(userVoIAM.getEmployeeTypeID());
|
||||||
|
|
||||||
userEO.setZj(userVoIAM.getZJ());
|
userEO.setZj(userVoIAM.getZJ());
|
||||||
|
|
||||||
// 转换org的关联数据
|
// 转换org的关联数据
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.adc.da.sync.service.schedule;
|
||||||
|
|
||||||
|
import com.adc.da.sync.service.SyncIAMTimer;
|
||||||
|
import com.adc.da.sys.vo.iam.CmpOrgResult;
|
||||||
|
import com.adc.da.sys.vo.iam.CmpUserResult;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: CaiHaohan
|
||||||
|
* @Date: 2023/5/17 16:54
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@EnableScheduling
|
||||||
|
@Slf4j
|
||||||
|
public class SyncIAMScheduleJob {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SyncIAMTimer syncIAMTimer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步部门
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 0 4 ? * ?")
|
||||||
|
public void syncOrgData() {
|
||||||
|
int pageIndex = 1;
|
||||||
|
int pageSize = 1000;
|
||||||
|
|
||||||
|
CmpOrgResult cmpOrgResult = this.syncIAMTimer.syncOrgIncrData(pageIndex, pageSize);
|
||||||
|
if (cmpOrgResult != null) {
|
||||||
|
int totalPages = cmpOrgResult.getData().getPages();
|
||||||
|
for (int i = pageIndex + 1; i <= totalPages; i++) {
|
||||||
|
this.syncIAMTimer.syncOrgIncrData(i, pageSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步用户
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 0 5 ? * ?")
|
||||||
|
public void syncUserData() {
|
||||||
|
int pageIndex = 1;
|
||||||
|
int pageSize = 1000;
|
||||||
|
|
||||||
|
CmpUserResult cmpUserResult = this.syncIAMTimer.syncUserIncrData(pageIndex, pageSize, null);
|
||||||
|
if (cmpUserResult != null) {
|
||||||
|
int totalPages = cmpUserResult.getData().getPages();
|
||||||
|
for (int i = pageIndex + 1; i <= totalPages; i++) {
|
||||||
|
this.syncIAMTimer.syncUserIncrData(i, pageSize, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ import com.adc.da.sys.service.iservice.IUserEoService;
|
|||||||
import com.adc.da.sys.util.EncryptUtil;
|
import com.adc.da.sys.util.EncryptUtil;
|
||||||
import com.adc.da.sys.vo.UserImportVO;
|
import com.adc.da.sys.vo.UserImportVO;
|
||||||
import com.adc.da.sys.vo.UserVO;
|
import com.adc.da.sys.vo.UserVO;
|
||||||
import com.adc.da.sys.vo.iam.SsoResponse;
|
import com.adc.da.sys.vo.iam.SsoTokenResponse;
|
||||||
import com.adc.da.sys.vo.iam.SsoUserInfoResponse;
|
import com.adc.da.sys.vo.iam.SsoUserInfoResponse;
|
||||||
import com.adc.da.util.exception.AdcDaBaseException;
|
import com.adc.da.util.exception.AdcDaBaseException;
|
||||||
import com.adc.da.util.utils.CollectionUtils;
|
import com.adc.da.util.utils.CollectionUtils;
|
||||||
@@ -444,13 +444,13 @@ public class UserEOServiceImpl implements IUserEoService {
|
|||||||
* @param code code
|
* @param code code
|
||||||
* @return Url
|
* @return Url
|
||||||
*/
|
*/
|
||||||
private String getTokenByCodeUrl(String code) {
|
private String getTokenByCodeUrl(String code, String redirectUrl) {
|
||||||
return ssoUrl + SsoConstants.GET_TOKEN_PATH
|
return ssoUrl + SsoConstants.GET_TOKEN_PATH
|
||||||
+ SsoConstants.GRANT_TYPE + SsoConstants.AUTHORIZATION_CODE + "&"
|
+ SsoConstants.GRANT_TYPE + SsoConstants.AUTHORIZATION_CODE + "&"
|
||||||
+ SsoConstants.CLIENT_ID + ssoClientId + "&"
|
+ SsoConstants.CLIENT_ID + ssoClientId + "&"
|
||||||
+ SsoConstants.CLIENT_SECRET + ssoClientSecret + "&"
|
+ SsoConstants.CLIENT_SECRET + ssoClientSecret + "&"
|
||||||
+ SsoConstants.CODE + code + "&"
|
+ SsoConstants.CODE + code + "&"
|
||||||
+ SsoConstants.REDIRECT_URI + "XXX";
|
+ SsoConstants.REDIRECT_URI + redirectUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -464,16 +464,16 @@ public class UserEOServiceImpl implements IUserEoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String ssoLogin(String code) {
|
public String ssoLogin(String code, String redirectUrl) {
|
||||||
log.info("SSO登录: Code为【{}】", code);
|
log.info("SSO登录: Code为【{}】", code);
|
||||||
//向SSO服务器发送code获取用户token
|
//向SSO服务器发送code获取用户token
|
||||||
String getTokenByCodeUrl = this.getTokenByCodeUrl(code);
|
String getTokenByCodeUrl = this.getTokenByCodeUrl(code, redirectUrl);
|
||||||
|
|
||||||
String tokenResponse = HttpRequest.post(getTokenByCodeUrl).execute().body();
|
String tokenResponse = HttpRequest.post(getTokenByCodeUrl).execute().body();
|
||||||
|
|
||||||
SsoResponse tokenResponseObject = JSONUtil.toBean(tokenResponse, SsoResponse.class);
|
SsoTokenResponse ssoTokenResponseObject = JSONUtil.toBean(tokenResponse, SsoTokenResponse.class);
|
||||||
//获取返回值中的token
|
//获取返回值中的token
|
||||||
String accessToken = tokenResponseObject.getAccess_token();
|
String accessToken = ssoTokenResponseObject.getAccess_token();
|
||||||
log.info("SSO登录: accessToken为【{}】", accessToken);
|
log.info("SSO登录: accessToken为【{}】", accessToken);
|
||||||
//向SSO服务器发送token获取用户数据
|
//向SSO服务器发送token获取用户数据
|
||||||
if (StrUtil.isBlank(accessToken)) {
|
if (StrUtil.isBlank(accessToken)) {
|
||||||
@@ -487,15 +487,15 @@ public class UserEOServiceImpl implements IUserEoService {
|
|||||||
SsoUserInfoResponse userInfoResponseObject = JSONUtil.toBean(userInfoResponse, SsoUserInfoResponse.class);
|
SsoUserInfoResponse userInfoResponseObject = JSONUtil.toBean(userInfoResponse, SsoUserInfoResponse.class);
|
||||||
|
|
||||||
//获取返回值中的用户id
|
//获取返回值中的用户id
|
||||||
String userId = userInfoResponseObject.getId();
|
String userAccount = userInfoResponseObject.getId();
|
||||||
log.info("SSO登录: userId为【{}】", userId);
|
log.info("SSO登录: 用户登录账号为【{}】", userAccount);
|
||||||
//根据用户id取出用户名
|
//根据用户id取出用户名
|
||||||
UserEO user = getUserById(userId);
|
UserEO user = dao.getUserEOByAccountNotDeleted(userAccount);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
log.info("根据用户id取出用户失败");
|
log.info("根据用户id取出用户失败");
|
||||||
throw new AdcDaBaseException("根据用户id取出用户失败");
|
throw new AdcDaBaseException("根据用户id取出用户失败");
|
||||||
}
|
}
|
||||||
return user.getUsname();
|
return user.getAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void checkExcel(List<UserImportVO> list) {
|
void checkExcel(List<UserImportVO> list) {
|
||||||
|
|||||||
@@ -77,5 +77,5 @@ public interface IUserEoService {
|
|||||||
* @param code
|
* @param code
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String ssoLogin(String code);
|
String ssoLogin(String code, String redirectUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -12,13 +12,23 @@ import lombok.NoArgsConstructor;
|
|||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class SsoResponse {
|
public class SsoTokenResponse {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回的token 必须
|
* 返回的token 必须
|
||||||
*/
|
*/
|
||||||
private String access_token;
|
private String access_token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* token类型
|
||||||
|
*/
|
||||||
|
private String token_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 过气时间
|
||||||
|
*/
|
||||||
|
private Long expires_in;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 刷新token(在应用配置里,打开【token刷新】的开关,即可返回该参数) 非必须
|
* 刷新token(在应用配置里,打开【token刷新】的开关,即可返回该参数) 非必须
|
||||||
*/
|
*/
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.adc.da.sys.vo.iam;
|
package com.adc.da.sys.vo.iam;
|
||||||
|
|
||||||
import cn.hutool.system.UserInfo;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -15,11 +14,15 @@ import lombok.NoArgsConstructor;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class SsoUserInfo {
|
public class SsoUserInfo {
|
||||||
|
|
||||||
private String account_no;
|
private String ad_account;
|
||||||
|
|
||||||
private String token_expired;
|
private String user_name;
|
||||||
|
|
||||||
private String token_gtime;
|
private String work_no;
|
||||||
|
|
||||||
|
private Long token_gtime;
|
||||||
|
|
||||||
|
private String user_uid;
|
||||||
|
|
||||||
private UserDetailInfo user_detail_info;
|
private UserDetailInfo user_detail_info;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user