|
|
|
package com.eco.plugin.xx.kksso.utils;
|
|
|
|
|
|
|
|
import com.fr.base.ServerConfig;
|
|
|
|
import com.fr.base.TableData;
|
|
|
|
import com.fr.base.TemplateUtils;
|
|
|
|
import com.fr.decision.authority.AuthorityContext;
|
|
|
|
import com.fr.decision.authority.data.User;
|
|
|
|
import com.fr.decision.webservice.bean.authentication.OriginUrlResponseBean;
|
|
|
|
import com.fr.decision.webservice.interceptor.handler.ReportTemplateRequestChecker;
|
|
|
|
import com.fr.decision.webservice.login.LogInOutResultInfo;
|
|
|
|
import com.fr.decision.webservice.utils.DecisionServiceConstants;
|
|
|
|
import com.fr.decision.webservice.utils.DecisionStatusService;
|
|
|
|
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.third.springframework.web.method.HandlerMethod;
|
|
|
|
import com.fr.web.controller.ReportRequestService;
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 根据originKey获取源链接
|
|
|
|
* @param originKey
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public static String getOriginUrl(String originKey) throws Exception {
|
|
|
|
if (StringUtils.isNotEmpty(originKey)) {
|
|
|
|
OriginUrlResponseBean originUrlResponseBean = (OriginUrlResponseBean) DecisionStatusService.originUrlStatusService().get(originKey);
|
|
|
|
DecisionStatusService.originUrlStatusService().delete(originKey);
|
|
|
|
if (originUrlResponseBean != null) {
|
|
|
|
return originUrlResponseBean.getOriginUrl();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return new OriginUrlResponseBean(TemplateUtils.render("${fineServletURL}")).getOriginUrl();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 判断是否开启模板认证
|
|
|
|
* @param originKey
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public static boolean isTempAuth(HttpServletRequest req,HttpServletResponse res) throws Exception {
|
|
|
|
ReportTemplateRequestChecker checker = new ReportTemplateRequestChecker();
|
|
|
|
HandlerMethod hm = new HandlerMethod(new ReportRequestService(),ReportRequestService.class.getMethod("preview", HttpServletRequest.class, HttpServletResponse.class, String.class));
|
|
|
|
return checker.checkRequest(req,res,hm);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static TableData getTableData(String serverDataSetName){
|
|
|
|
TableData userInfo = TableDataConfig.getInstance().getTableData("serverDataSetName");
|
|
|
|
|
|
|
|
// DataModel userInfoDM = userInfo.createDataModel(Calculator.createCalculator());
|
|
|
|
return userInfo;
|
|
|
|
}
|
|
|
|
}
|