Explorar o código

Merge branch 'ETA_2.3.0' into debug

xiziwen hai 7 meses
pai
achega
c27425676b
Modificáronse 2 ficheiros con 85 adicións e 83 borrados
  1. 50 63
      controllers/base_auth.go
  2. 35 20
      controllers/sandbox/sandbox.go

+ 50 - 63
controllers/base_auth.go

@@ -494,29 +494,13 @@ func (c *BaseAuthController) Prepare() {
 		c.Lang = lang
 	}
 
-	isOk, token, resp := checkToken(c)
+	isOk, session, resp := checkToken(c)
 	if !isOk {
 		_ = c.JSON(resp, false, false)
 		c.StopRun()
 		return
 	}
 
-	//accountStr := authorizationArr[1]
-	//accountArr := strings.Split(accountStr, "=")
-	//account := accountArr[1]
-
-	session, err := system.GetSysSessionByToken(token)
-	//fmt.Println("session:", session)
-	if err != nil {
-		if utils.IsErrNoRow(err) {
-			c.JSON(models.BaseResponse{Ret: 408, Msg: "信息已变更,请重新登陆!", ErrMsg: "Token 信息已变更:Token: " + token}, false, false)
-			c.StopRun()
-			return
-		}
-		c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
-		c.StopRun()
-		return
-	}
 	if session == nil {
 		c.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "sesson is empty "}, false, false)
 		c.StopRun()
@@ -524,17 +508,7 @@ func (c *BaseAuthController) Prepare() {
 	}
 	//校验token是否合法
 	// JWT校验Token和Account
-	account := utils.MD5(session.UserName)
-	if !utils.CheckToken(account, token) {
-		c.JSON(models.BaseResponse{Ret: 408, Msg: "鉴权失败,请重新登录!", ErrMsg: "登录失效,请重新登陆!,CheckToken Fail"}, false, false)
-		c.StopRun()
-		return
-	}
-	if time.Now().After(session.ExpiredTime) {
-		c.JSON(models.BaseResponse{Ret: 408, Msg: "请重新登录!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
-		c.StopRun()
-		return
-	}
+
 	admin, err := system.GetSysUserById(session.SysUserId)
 	if err != nil {
 		if utils.IsErrNoRow(err) {
@@ -558,36 +532,36 @@ func (c *BaseAuthController) Prepare() {
 		return
 	}
 
-	// 如果当前登录态是不可信设备的,那么需要做过期校验
-	if session.IsRemember != 1 {
-		loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
-		loginInfo, _ := utils.Rc.RedisString(loginKey)
-		if loginInfo == `` {
-			c.JSON(models.BaseResponse{Ret: 408, Msg: "超时未操作,系统自动退出!", ErrMsg: "超时未操作,系统自动退出!"}, false, false)
-			c.StopRun()
-			return
-		}
-
-		//if loginInfo != "1" {
-		//	lastLoginTime := admin.LastLoginTime
-		//
-		//	lastLoginTimeObj, err := time.Parse(utils.FormatDateWallWithLoc, lastLoginTime)
-		//	fmt.Println(lastLoginTimeObj, err)
-		//
-		//	msg := `该账号于` + lastLoginTimeObj.Format(utils.FormatDateTime) + "在其他网络登录。此客户端已退出登录。"
-		//	c.JSON(models.BaseResponse{Ret: 408, Msg: msg, ErrMsg: msg}, false, false)
-		//	c.StopRun()
-		//	return
-		//}
-
-		// 如果是ETA体验版-更新活跃时长/更新登录时长的接口请求, 则不更新Token时长
-		if uri != `/adminapi/eta_trial/user/login_duration` && uri != `/adminapi/eta_trial/user/active` {
-			utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
-			// 不信任名单也同步更新
-			noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, admin.AdminId)
-			utils.Rc.Put(noTrustLoginKey, session.Id, utils.LoginCacheTime*time.Minute)
-		}
-	}
+	//// 如果当前登录态是不可信设备的,那么需要做过期校验
+	//if session.IsRemember != 1 {
+	//	loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
+	//	loginInfo, _ := utils.Rc.RedisString(loginKey)
+	//	if loginInfo == `` {
+	//		c.JSON(models.BaseResponse{Ret: 408, Msg: "超时未操作,系统自动退出!", ErrMsg: "超时未操作,系统自动退出!"}, false, false)
+	//		c.StopRun()
+	//		return
+	//	}
+	//
+	//	//if loginInfo != "1" {
+	//	//	lastLoginTime := admin.LastLoginTime
+	//	//
+	//	//	lastLoginTimeObj, err := time.Parse(utils.FormatDateWallWithLoc, lastLoginTime)
+	//	//	fmt.Println(lastLoginTimeObj, err)
+	//	//
+	//	//	msg := `该账号于` + lastLoginTimeObj.Format(utils.FormatDateTime) + "在其他网络登录。此客户端已退出登录。"
+	//	//	c.JSON(models.BaseResponse{Ret: 408, Msg: msg, ErrMsg: msg}, false, false)
+	//	//	c.StopRun()
+	//	//	return
+	//	//}
+	//
+	//	// 如果是ETA体验版-更新活跃时长/更新登录时长的接口请求, 则不更新Token时长
+	//	if uri != `/adminapi/eta_trial/user/login_duration` && uri != `/adminapi/eta_trial/user/active` {
+	//		utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
+	//		// 不信任名单也同步更新
+	//		noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, admin.AdminId)
+	//		utils.Rc.Put(noTrustLoginKey, session.Id, utils.LoginCacheTime*time.Minute)
+	//	}
+	//}
 
 	admin.RoleTypeCode = GetSysUserRoleTypeCode(admin.RoleTypeCode)
 	c.SysUser = admin
@@ -641,13 +615,15 @@ func (c *BaseAuthController) Prepare() {
 // @datetime 2024-10-30 11:29:37
 // @param c *BaseAuthController
 // @return isOk bool
-// @return token string
+// @return session system.SysSession
 // @return resp models.BaseResponse
-func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.BaseResponse) {
+func checkToken(c *BaseAuthController) (isOk bool, session *system.SysSession, resp models.BaseResponse) {
 	// 是否校验成功
 	isOk = true
 	uri := c.Ctx.Input.URI()
 
+	var token string
+
 	// 单点登录逻辑
 	aiUser := c.Ctx.GetCookie("ai_user")
 	if aiUser == `` {
@@ -753,9 +729,8 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
 
 	// CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
 	account := utils.MD5(session.UserName)
-	loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
-	loginCache, _ := utils.Rc.RedisString(loginKey)
-	if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
+	//if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime){
+	if session.UserName != aiUser || !utils.CheckToken(account, token) {
 		newLogin, e := services.UserLoginChange(aiUser)
 		if e != nil {
 			resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
@@ -766,6 +741,18 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
 		return
 	}
 
+	//account := utils.MD5(session.UserName)
+	//if !utils.CheckToken(account, token) {
+	//	resp = models.BaseResponse{Ret: 408, Msg: "鉴权失败,请重新登录!", ErrMsg: "登录失效,请重新登陆!,CheckToken Fail"}
+	//	isOk = false
+	//	return
+	//}
+	//if time.Now().After(session.ExpiredTime) {
+	//	resp = models.BaseResponse{Ret: 408, Msg: "请重新登录!", ErrMsg: "获取用户信息异常,Err:" + err.Error()}
+	//	isOk = false
+	//	return
+	//}
+
 	// 正常逻辑
 	if token == "" {
 		resp = models.BaseResponse{Ret: 408, Msg: "请重新授权!", ErrMsg: "请重新授权:Token is empty or account is empty"}

+ 35 - 20
controllers/sandbox/sandbox.go

@@ -2395,16 +2395,21 @@ func (this *SandboxController) LinkEdbInfoCheck() {
 		return
 	}
 	edbList := make([]*sandbox.SandboxLinkCheckItem, 0)
-	for _, v := range edbInfoList {
-		tmp := &sandbox.SandboxLinkCheckItem{
-			Id:         v.EdbInfoId,
-			Name:       v.EdbName,
-			UniqueCode: v.UniqueCode,
-			ClassifyId: v.ClassifyId,
+	for _, id := range req.EdbInfoIdList {
+		for _, v := range edbInfoList {
+			if v.EdbInfoId == id {
+				tmp := &sandbox.SandboxLinkCheckItem{
+					Id:         v.EdbInfoId,
+					Name:       v.EdbName,
+					UniqueCode: v.UniqueCode,
+					ClassifyId: v.ClassifyId,
+				}
+				edbList = append(edbList, tmp)
+			}
 		}
-		edbList = append(edbList, tmp)
 	}
 
+
 	chartList, err := data_manage.GetChartInfoByIdList(req.ChartInfoIdList)
 	if err != nil {
 		br.Msg = `获取失败`
@@ -2412,16 +2417,21 @@ func (this *SandboxController) LinkEdbInfoCheck() {
 		return
 	}
 	chartListTmp := make([]*sandbox.SandboxLinkCheckItem, 0)
-	for _, v := range chartList {
-		tmp := &sandbox.SandboxLinkCheckItem{
-			Id:         v.ChartInfoId,
-			Name:       v.ChartName,
-			UniqueCode: v.UniqueCode,
-			ClassifyId: v.ChartClassifyId,
+	for _, id := range req.ChartInfoIdList {
+		for _, v := range chartList {
+			if v.ChartInfoId == id {
+				tmp := &sandbox.SandboxLinkCheckItem{
+					Id:         v.ChartInfoId,
+					Name:       v.ChartName,
+					UniqueCode: v.UniqueCode,
+					ClassifyId: v.ChartClassifyId,
+				}
+				chartListTmp = append(chartListTmp, tmp)
+			}
 		}
-		chartListTmp = append(chartListTmp, tmp)
 	}
 
+
 	reportList, err := models.GetSimpleReportByIds(req.ReportIdList)
 	if err != nil {
 		br.Msg = `获取失败`
@@ -2429,14 +2439,19 @@ func (this *SandboxController) LinkEdbInfoCheck() {
 		return
 	}
 	reportListTmp := make([]*sandbox.SandboxLinkCheckItem, 0)
-	for _, v := range reportList {
-		tmp := &sandbox.SandboxLinkCheckItem{
-			Id:         v.Id,
-			Name:       v.Title,
-			UniqueCode: v.ReportCode,
+	for _, id := range req.ReportIdList {
+		for _, v := range reportList {
+			if v.Id == id {
+				tmp := &sandbox.SandboxLinkCheckItem{
+					Id:         v.Id,
+					Name:       v.Title,
+					UniqueCode: v.ReportCode,
+				}
+				reportListTmp = append(reportListTmp, tmp)
+			}
 		}
-		reportListTmp = append(reportListTmp, tmp)
 	}
+
 	resp.EdbInfoIdList = edbList
 	resp.ChartInfoIdList = chartListTmp
 	resp.ReportIdList = reportListTmp