From b2364d7c11aea1b2a512184102036517fccd1385 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 07 十一月 2023 10:26:50 +0800
Subject: [PATCH] 用户登录,获取登录用户权限,权限验证
---
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java | 71 ++++++++++++++++++++++++++++++++---
1 files changed, 65 insertions(+), 6 deletions(-)
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
index 321f2c2..957ef19 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -1,6 +1,7 @@
package com.dy.sso.busi;
import com.dy.common.aop.SsoVo;
+import com.dy.common.multiDataSource.DataSourceContext;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.ResultCodeMsg;
@@ -44,7 +45,6 @@
//@Autowired
//private CacheManager cacheManager ;
-
@Autowired
public void setSv(SsoSv sv ){
this.sv = sv ;
@@ -54,6 +54,7 @@
/**
* 瀹㈡埛绔姹傜敤鎴风櫥褰曪紝瀹㈡埛绔彁浜son鏁版嵁
* @param vo 鐢ㄦ埛鐧诲綍鍊煎璞�
+ * @param bindingResult 杈撳叆楠岃瘉
* @return 鐧诲綍鐢ㄦ埛鍊煎璞�
*/
@Operation(summary = "鍗曠偣鐧诲綍", description = "鎻愪氦鐧诲綍鐢ㄦ埛鍊煎璞★紙json鏍煎紡锛夛紝杩涜鍗曠偣鐧诲綍")
@@ -119,6 +120,11 @@
if(bindingResult != null && bindingResult.hasErrors()){
return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
}
+ if(vo.orgTag == null || vo.orgTag.trim().length() == 0){
+ return BaseResponseUtils.buildFail("鏈�夋嫨缁勭粐鍗曚綅");
+ }
+ //鎶婄粍缁囧崟浣嶆爣绛句綔涓烘暟鎹簮鍚嶇О
+ DataSourceContext.set(vo.orgTag);
String uuid ;
BaUser userPo ;
@@ -182,19 +188,72 @@
* 姝ゆ柟娉曚緵瀛愭ā鍧楃郴缁熻皟鐢紝鎵�浠ヤ笉鍏紑鍦ˋPI鎺ュ彛涓�
* 鏂规硶鍔熻兘锛氶獙璇佹槸鍚﹀凡缁忕櫥褰曪紝濡傛灉鐧诲綍浜嗭紝鍐嶉獙璇佹潈闄�
* @param token 鐧诲綍鐢ㄦ埛token
- * @param power 楠岃瘉涓�涓潈闄�
- * @param allPower 楠岃瘉鎵�鏈夋潈闄�
- * @param anyPower 楠岃瘉浠讳綍涓�涓潈闄�
+ * @param privilege 楠岃瘉涓�涓潈闄�
+ * @param allPrivilege 楠岃瘉鎵�鏈夋潈闄�
+ * @param anyPrivilege 楠岃瘉浠讳綍涓�涓潈闄�
* @return SsoVo
*/
@Hidden
@GetMapping(path = "ssoCheck")
- public SsoVo ssoCheck(String token, String power, String[] allPower, String[] anyPower){
+ public SsoVo ssoCheck(String token, String privilege, String[] allPrivilege, String[] anyPrivilege){
BaUser userPo = this.sv.getByUuid(token) ;
SsoVo vo = new SsoVo();
if(userPo != null){
vo.logined = true ;
- vo.hasPower = true ;
+ vo.hasPower = false ;//榛樿鏄棤鏉冮檺
+ if(userPo.supperAdmin != null && userPo.supperAdmin == 1){
+ vo.hasPower = true ;
+ }else{
+ if(userPo.privileges != null && userPo.privileges.size() > 0){
+ if(privilege != null && !privilege.trim().equals("")){
+ int intPri = Integer.parseInt(privilege) ;
+ for(Integer pri : userPo.privileges){
+ if(pri == intPri){
+ vo.hasPower = true ;
+ break ;
+ }
+ }
+ }else{
+ if(allPrivilege != null && allPrivilege.length > 0){
+ int intPri ;
+ boolean ok = false ;
+ boolean allOk = true ;
+ for(String strPri : allPrivilege){
+ intPri = Integer.parseInt(strPri) ;
+ for(Integer pri : userPo.privileges){
+ if(pri == intPri){
+ ok = true ;
+ break ;
+ }
+ }
+ if(!ok){
+ allOk = false ;
+ break ;
+ }
+ }
+ if(allOk){
+ vo.hasPower = true ;
+ }
+ }else{
+ int intPri ;
+ if(anyPrivilege != null && anyPrivilege.length > 0){
+ for(String strPri : anyPrivilege){
+ intPri = Integer.parseInt(strPri) ;
+ for(Integer pri : userPo.privileges){
+ if(pri == intPri){
+ vo.hasPower = true ;
+ break ;
+ }
+ }
+ if(vo.hasPower){
+ break ;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
vo.dataSourceName = userPo.getOrgTag() ;
}else{
vo.logined = false ;
--
Gitblit v1.8.0