You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
257 lines
9.0 KiB
257 lines
9.0 KiB
package com.eco.plugin.xx.tgjtsso.utils; |
|
|
|
import com.fr.base.ServerConfig; |
|
import com.fr.base.TableData; |
|
import com.fr.decision.authority.AuthorityContext; |
|
import com.fr.decision.authority.data.User; |
|
import com.fr.decision.webservice.login.LogInOutResultInfo; |
|
import com.fr.decision.webservice.utils.DecisionServiceConstants; |
|
import com.fr.decision.webservice.v10.login.LoginService; |
|
import com.fr.decision.webservice.v10.login.event.LogInOutEvent; |
|
import com.fr.decision.webservice.v10.user.UserService; |
|
import com.fr.event.EventDispatcher; |
|
import com.fr.file.TableDataConfig; |
|
import com.fr.general.data.DataModel; |
|
import com.fr.log.FineLoggerFactory; |
|
import com.fr.script.Calculator; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.stable.query.QueryFactory; |
|
import com.fr.stable.query.restriction.RestrictionFactory; |
|
import com.fr.web.utils.WebUtils; |
|
|
|
import javax.servlet.http.Cookie; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import javax.servlet.http.HttpSession; |
|
import java.io.IOException; |
|
import java.util.List; |
|
|
|
public class FRUtils { |
|
/** |
|
* 判断用户是否存在 |
|
* @param userName |
|
* @return |
|
*/ |
|
public static boolean isUserExist(String userName){ |
|
if (StringUtils.isEmpty(userName)) { |
|
return false; |
|
} else { |
|
try { |
|
List var1 = AuthorityContext.getInstance().getUserController().find(QueryFactory.create().addRestriction(RestrictionFactory.eq("userName", userName))); |
|
return var1 != null && !var1.isEmpty(); |
|
} catch (Exception var2) { |
|
FineLoggerFactory.getLogger().error(var2.getMessage()); |
|
return false; |
|
} |
|
} |
|
} |
|
|
|
/** |
|
* 判断是否登录FR |
|
* @param req |
|
* @return |
|
*/ |
|
public static boolean isLogin(HttpServletRequest req){ |
|
return LoginService.getInstance().isLogged(req); |
|
} |
|
|
|
/** |
|
* 帆软登录 |
|
* @param httpServletRequest |
|
* @param httpServletResponse |
|
* @param userName |
|
* @param url |
|
*/ |
|
public static void login(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,String userName,String url){ |
|
|
|
FineLoggerFactory.getLogger().info("FRLOG:用户名:"+userName); |
|
FineLoggerFactory.getLogger().info("FRLOG:跳转链接:"+url); |
|
|
|
|
|
//判断用户名是否为空 |
|
if(!Utils.isNullStr(userName)){ |
|
if(isUserExist(userName)){ |
|
String FRToken = ""; |
|
|
|
try { |
|
//HttpSession session = httpServletRequest.getSession(true); |
|
|
|
FRToken = LoginService.getInstance().login(httpServletRequest, httpServletResponse, userName); |
|
|
|
//httpServletRequest.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME,FRToken); |
|
|
|
//session.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, FRToken); |
|
EventDispatcher.fire(LogInOutEvent.LOGIN,new LogInOutResultInfo(httpServletRequest,httpServletResponse,userName,true)); |
|
FineLoggerFactory.getLogger().info("FRLOG:登陆成功!"); |
|
|
|
if(!Utils.isNullStr(url)){ |
|
httpServletResponse.sendRedirect(url); |
|
} |
|
} catch (Exception e) { |
|
ResponseUtils.failedResponse(httpServletResponse,"登录异常,请联系管理员!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:登录异常,请联系管理员!"); |
|
FineLoggerFactory.getLogger().info("FRLOGException:"+e.getMessage()); |
|
} |
|
}else{ |
|
ResponseUtils.failedResponse(httpServletResponse,"用户在报表系统中不存在!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:用户在报表系统中不存在!"); |
|
} |
|
}else{ |
|
ResponseUtils.failedResponse(httpServletResponse,"用户名不能为空!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:用户名不能为空!"); |
|
} |
|
} |
|
|
|
/** |
|
* 帆软登录 |
|
* @param httpServletRequest |
|
* @param httpServletResponse |
|
* @param token |
|
* @param url |
|
*/ |
|
public static void loginByToken(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,String token,String url){ |
|
|
|
FineLoggerFactory.getLogger().info("FRLOG:token:"+token); |
|
FineLoggerFactory.getLogger().info("FRLOG:跳转链接:"+url); |
|
|
|
|
|
//判断用户名是否为空 |
|
if(!Utils.isNullStr(token)){ |
|
writeToken2Cookie(httpServletResponse,token,-1); |
|
|
|
HttpSession session = httpServletRequest.getSession(true); |
|
|
|
httpServletRequest.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME,token); |
|
|
|
session.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, token); |
|
|
|
if(!Utils.isNullStr(url)){ |
|
try { |
|
httpServletResponse.sendRedirect(url); |
|
} catch (IOException e) { |
|
ResponseUtils.failedResponse(httpServletResponse,"跳转异常!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:跳转异常!"); |
|
} |
|
} |
|
}else{ |
|
ResponseUtils.failedResponse(httpServletResponse,"token不能为空!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:token不能为空!"); |
|
} |
|
} |
|
|
|
/** |
|
* 获取token |
|
* @param httpServletRequest |
|
* @param httpServletResponse |
|
* @param username |
|
* @return |
|
*/ |
|
public static String getToken(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,String username){ |
|
String token = ""; |
|
try { |
|
token = LoginService.getInstance().login(httpServletRequest, httpServletResponse, username); |
|
} catch (Exception e) { |
|
FineLoggerFactory.getLogger().info("FRLOG:获取token失败"+e.getMessage()); |
|
} |
|
|
|
return token; |
|
} |
|
|
|
private static void writeToken2Cookie(HttpServletResponse var1, String var2, int var3) { |
|
try { |
|
if (StringUtils.isNotEmpty(var2)) { |
|
Cookie var4 = new Cookie("fine_auth_token", var2); |
|
long var5 = var3 == -2 ? 1209600000L : (long)var3; |
|
var4.setMaxAge((int)var5); |
|
var4.setPath(ServerConfig.getInstance().getCookiePath()); |
|
var1.addCookie(var4); |
|
Cookie var7 = new Cookie("fine_remember_login", String.valueOf(var3 == -2 ? -2 : -1)); |
|
var7.setMaxAge((int)var5); |
|
var7.setPath(ServerConfig.getInstance().getCookiePath()); |
|
var1.addCookie(var7); |
|
} else { |
|
FineLoggerFactory.getLogger().error("empty token cannot save."); |
|
} |
|
} catch (Exception var8) { |
|
FineLoggerFactory.getLogger().error(var8.getMessage(), var8); |
|
} |
|
|
|
} |
|
|
|
/** |
|
* |
|
* @param httpServletRequest |
|
* @param httpServletResponse |
|
*/ |
|
public static void logout(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) |
|
{ |
|
if(!isLogin(httpServletRequest)){ |
|
return ; |
|
} |
|
|
|
try { |
|
LoginService.getInstance().logout(httpServletRequest,httpServletResponse); |
|
} catch (Exception e) { |
|
ResponseUtils.failedResponse(httpServletResponse,"登出异常,请联系管理员!"); |
|
FineLoggerFactory.getLogger().info("FRLOG:登出异常,请联系管理员!"); |
|
FineLoggerFactory.getLogger().info("FRLOGException:"+e.getMessage()); |
|
} |
|
} |
|
|
|
/** |
|
* 打印FR日志 |
|
* @param message |
|
*/ |
|
public static void FRLogInfo(String message){ |
|
FineLoggerFactory.getLogger().info("FRLOG:"+message); |
|
} |
|
|
|
/** |
|
* 打印FR日志-error |
|
* @param message |
|
*/ |
|
public static void FRLogError(String message){ |
|
FineLoggerFactory.getLogger().error("FRLOG:"+message); |
|
} |
|
|
|
|
|
/** |
|
* 根据用户名获取用户信息 |
|
* @param userName |
|
* @return |
|
*/ |
|
public static User getFRUserByUserName(String userName){ |
|
try { |
|
return UserService.getInstance().getUserByUserName(userName); |
|
} catch (Exception e) { |
|
FRLogInfo("获取用户信息异常:"+e.getMessage()); |
|
} |
|
|
|
return null; |
|
} |
|
|
|
/** |
|
* 解密FR密码 |
|
* @param password |
|
* @return |
|
*/ |
|
// public static String decryptFRPsd(String password){ |
|
// FRLogInfo("解密密码:"+password); |
|
// return TransmissionTool.decrypt(password); |
|
// } |
|
|
|
/** |
|
* 获取带参数的访问链接 |
|
* @return |
|
*/ |
|
public static String getAllUrl(HttpServletRequest httpServletRequest){ |
|
return WebUtils.getOriginalURL(httpServletRequest); |
|
} |
|
|
|
public static TableData getTableData(String serverDataSetName){ |
|
TableData userInfo = TableDataConfig.getInstance().getTableData("serverDataSetName"); |
|
|
|
// DataModel userInfoDM = userInfo.createDataModel(Calculator.createCalculator()); |
|
return userInfo; |
|
} |
|
}
|
|
|