|
|
|
@ -16,114 +16,198 @@ import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
public class PortalLoginBeforeFilter implements Filter
|
|
|
|
|
{
|
|
|
|
|
private List<String> bpmHostList = new ArrayList<String>();
|
|
|
|
|
@Override
|
|
|
|
|
public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
String bpm_host_array = bb.getPropValue("PORTAL_INFO","bpm_host_array");
|
|
|
|
|
if(!"".equals(bpm_host_array))
|
|
|
|
|
{
|
|
|
|
|
String[] bpm_host_arr = bpm_host_array.split(";");
|
|
|
|
|
for(int i=0;i<bpm_host_arr.length;i++){
|
|
|
|
|
bpmHostList.add(bpm_host_arr[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException
|
|
|
|
|
{
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
|
|
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
|
|
|
|
HttpServletResponse response = (HttpServletResponse)servletResponse;
|
|
|
|
|
|
|
|
|
|
boolean isExcludedPage = false;
|
|
|
|
|
String requestURL = request.getRequestURL().toString();
|
|
|
|
|
bb.writeLog("bpmHostList:"+bpmHostList.size());
|
|
|
|
|
if(!bpmHostList.isEmpty()){
|
|
|
|
|
for(String bpm_host_val : bpmHostList){
|
|
|
|
|
bb.writeLog("bpm_host_val:"+bpm_host_val);
|
|
|
|
|
if(requestURL.contains(bpm_host_val)){
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String getRequestURI = request.getRequestURI();
|
|
|
|
|
if(!isExcludedPage){
|
|
|
|
|
//请求地址
|
|
|
|
|
String path_lowerCase = getRequestURI.toLowerCase();
|
|
|
|
|
if (path_lowerCase.endsWith(".cur") || path_lowerCase.endsWith(".ico") || path_lowerCase.endsWith(".css") || path_lowerCase.endsWith(".htm") || path_lowerCase.endsWith(".png") || path_lowerCase.endsWith(".jpg") || path_lowerCase.endsWith(".gif")) {
|
|
|
|
|
// 如果发现是css或者js文件,直接放行
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class PortalLoginBeforeFilter implements Filter {
|
|
|
|
|
private List<String> bpmHostList = new ArrayList<String>();
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
String bpm_host_array = bb.getPropValue("PORTAL_INFO", "bpm_host_array");
|
|
|
|
|
if (!"".equals(bpm_host_array)) {
|
|
|
|
|
String[] bpm_host_arr = bpm_host_array.split(";");
|
|
|
|
|
for (int i = 0; i < bpm_host_arr.length; i++) {
|
|
|
|
|
bpmHostList.add(bpm_host_arr[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
|
|
|
|
|
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
|
|
|
|
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
|
|
|
|
|
|
|
|
|
boolean isExcludedPage = false;
|
|
|
|
|
String requestURL = request.getRequestURL().toString();
|
|
|
|
|
bb.writeLog("bpmHostList:" + bpmHostList.size());
|
|
|
|
|
if (!bpmHostList.isEmpty()) {
|
|
|
|
|
for (String bpm_host_val : bpmHostList) {
|
|
|
|
|
bb.writeLog("bpm_host_val:" + bpm_host_val);
|
|
|
|
|
if (requestURL.contains(bpm_host_val)) {
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String getRequestURI = request.getRequestURI();
|
|
|
|
|
if (!isExcludedPage) {
|
|
|
|
|
//请求地址
|
|
|
|
|
String path_lowerCase = getRequestURI.toLowerCase();
|
|
|
|
|
if (path_lowerCase.endsWith(".cur") || path_lowerCase.endsWith(".ico") || path_lowerCase.endsWith(".css") || path_lowerCase.endsWith(".htm") || path_lowerCase.endsWith(".png") || path_lowerCase.endsWith(".jpg") || path_lowerCase.endsWith(".gif")) {
|
|
|
|
|
// 如果发现是css或者js文件,直接放行
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bb.writeLog("getRequestURI:" + getRequestURI + " isExcludedPage:" + isExcludedPage);
|
|
|
|
|
|
|
|
|
|
bb.writeLog("getRequestURI:"+getRequestURI+" isExcludedPage:"+isExcludedPage);
|
|
|
|
|
if (!isExcludedPage) {
|
|
|
|
|
User loginuser = (User) request.getSession(true).getAttribute("weaver_user@bean");
|
|
|
|
|
if (loginuser == null) {
|
|
|
|
|
String uid = "";
|
|
|
|
|
String cookies = request.getHeader("cookie");
|
|
|
|
|
if (StringUtils.isNotEmpty(cookies)) {
|
|
|
|
|
String[] cookievals = cookies.split(";");
|
|
|
|
|
for (int i = 0; i < cookievals.length; i++) {
|
|
|
|
|
String cookval = cookievals[i];
|
|
|
|
|
if (!"".equals(cookval) && cookval.contains("=")) {
|
|
|
|
|
String key = cookval.substring(0, cookval.indexOf("="));
|
|
|
|
|
String value = cookval.substring(cookval.indexOf("=") + 1);
|
|
|
|
|
if ("SESSION".equals(key.trim()) || key.contains("SESSION")) {
|
|
|
|
|
uid = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!isExcludedPage)
|
|
|
|
|
{
|
|
|
|
|
User loginuser = (User) request.getSession(true).getAttribute("weaver_user@bean");
|
|
|
|
|
if (loginuser == null)
|
|
|
|
|
{
|
|
|
|
|
String uid = "" ;
|
|
|
|
|
//ecology=BA0A2738FBB4C7664CEECCC8B0CF408B; HTML_VERSION=1603079097996;
|
|
|
|
|
// ZSMART_LOCALE=en; SESSION=4e101591-da0e-4425-b035-ffe684f85bca;
|
|
|
|
|
// areaId=731; userId=1; orgId=1;
|
|
|
|
|
// CLOUD_APP_NAME=dbeptest7_pot-uportal-core;
|
|
|
|
|
// CLOUD_APP_ID=44074
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(uid)) {
|
|
|
|
|
String url = bb.getPropValue("PORTAL_INFO", "portal_user_auth");
|
|
|
|
|
//String url = "http://172.16.25.133/portal-web/user/current" ;
|
|
|
|
|
bb.writeLog("url:" + url);
|
|
|
|
|
|
|
|
|
|
HttpRequestUtil HttpRequestUtil = new HttpRequestUtil();
|
|
|
|
|
Map<String, String> headMap = new HashMap<String, String>();
|
|
|
|
|
headMap.put("Cookie", "SESSION=" + uid);
|
|
|
|
|
String msg = HttpRequestUtil.httpGet1(url, headMap, "UTF-8");
|
|
|
|
|
if (!"".equals(msg)) {
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(msg);
|
|
|
|
|
if ("1".equals(jsonObject.getString("resultCode"))) {
|
|
|
|
|
JSONObject resultObject = jsonObject.getJSONObject("resultObject");
|
|
|
|
|
String staffCode = resultObject.getString("staffCode");
|
|
|
|
|
if (!"".equals(staffCode)) {
|
|
|
|
|
User user_new = null;
|
|
|
|
|
String sql = "";
|
|
|
|
|
if ("admin".equals(staffCode)) {
|
|
|
|
|
staffCode = "sysadmin";
|
|
|
|
|
sql = " select * from hrmresourcemanager where loginid =? ";
|
|
|
|
|
} else {
|
|
|
|
|
sql = " select * from HrmResource where loginid =? ";
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("sql:" + sql);
|
|
|
|
|
rs.executeQuery(sql, new Object[]{staffCode});
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
user_new = new User();
|
|
|
|
|
user_new.setUid(rs.getInt("id"));
|
|
|
|
|
user_new.setLoginid(rs.getString("loginid"));
|
|
|
|
|
user_new.setFirstname(rs.getString("firstname"));
|
|
|
|
|
user_new.setLastname(rs.getString("lastname"));
|
|
|
|
|
user_new.setAliasname(rs.getString("aliasname"));
|
|
|
|
|
user_new.setTitle(rs.getString("title"));
|
|
|
|
|
user_new.setTitlelocation(rs.getString("titlelocation"));
|
|
|
|
|
user_new.setSex(rs.getString("sex"));
|
|
|
|
|
user_new.setPwd(rs.getString("password"));
|
|
|
|
|
String languageidweaver = rs.getString("systemlanguage");
|
|
|
|
|
user_new.setLanguage(Util.getIntValue(languageidweaver, 0));
|
|
|
|
|
|
|
|
|
|
user_new.setTelephone(rs.getString("telephone"));
|
|
|
|
|
user_new.setMobile(rs.getString("mobile"));
|
|
|
|
|
user_new.setMobilecall(rs.getString("mobilecall"));
|
|
|
|
|
user_new.setEmail(rs.getString("email"));
|
|
|
|
|
user_new.setCountryid(rs.getString("countryid"));
|
|
|
|
|
user_new.setLocationid(rs.getString("locationid"));
|
|
|
|
|
user_new.setResourcetype(rs.getString("resourcetype"));
|
|
|
|
|
user_new.setStartdate(rs.getString("startdate"));
|
|
|
|
|
user_new.setEnddate(rs.getString("enddate"));
|
|
|
|
|
user_new.setContractdate(rs.getString("contractdate"));
|
|
|
|
|
user_new.setJobtitle(rs.getString("jobtitle"));
|
|
|
|
|
user_new.setJobgroup(rs.getString("jobgroup"));
|
|
|
|
|
user_new.setJobactivity(rs.getString("jobactivity"));
|
|
|
|
|
user_new.setJoblevel(rs.getString("joblevel"));
|
|
|
|
|
user_new.setSeclevel(rs.getString("seclevel"));
|
|
|
|
|
user_new.setUserDepartment(Util.getIntValue(rs.getString("departmentid"), 0));
|
|
|
|
|
user_new.setUserSubCompany1(Util.getIntValue(rs.getString("subcompanyid1"), 0));
|
|
|
|
|
user_new.setUserSubCompany2(Util.getIntValue(rs.getString("subcompanyid2"), 0));
|
|
|
|
|
user_new.setUserSubCompany3(Util.getIntValue(rs.getString("subcompanyid3"), 0));
|
|
|
|
|
user_new.setUserSubCompany4(Util.getIntValue(rs.getString("subcompanyid4"), 0));
|
|
|
|
|
user_new.setManagerid(rs.getString("managerid"));
|
|
|
|
|
user_new.setAssistantid(rs.getString("assistantid"));
|
|
|
|
|
user_new.setPurchaselimit(rs.getString("purchaselimit"));
|
|
|
|
|
user_new.setCurrencyid(rs.getString("currencyid"));
|
|
|
|
|
user_new.setLastlogindate(rs.getString("currentdate"));
|
|
|
|
|
user_new.setLogintype("1");
|
|
|
|
|
user_new.setAccount(rs.getString("account"));
|
|
|
|
|
|
|
|
|
|
user_new.setLoginip(request.getRemoteAddr());
|
|
|
|
|
request.getSession(true).setMaxInactiveInterval(60 * 60 * 24);
|
|
|
|
|
request.getSession(true).setAttribute("weaver_user@bean", user_new);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
//用户session存在,判断和接口中的codeshi是否一致
|
|
|
|
|
String uid = "";
|
|
|
|
|
String cookies = request.getHeader("cookie");
|
|
|
|
|
if(StringUtils.isNotEmpty(cookies))
|
|
|
|
|
{
|
|
|
|
|
if (StringUtils.isNotEmpty(cookies)) {
|
|
|
|
|
String[] cookievals = cookies.split(";");
|
|
|
|
|
for(int i=0;i<cookievals.length;i++)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < cookievals.length; i++) {
|
|
|
|
|
String cookval = cookievals[i];
|
|
|
|
|
if(!"".equals(cookval) && cookval.contains("="))
|
|
|
|
|
{
|
|
|
|
|
String key = cookval.substring(0,cookval.indexOf("="));
|
|
|
|
|
String value = cookval.substring(cookval.indexOf("=")+1);
|
|
|
|
|
if("SESSION".equals(key.trim()) || key.contains("SESSION")){
|
|
|
|
|
if (!"".equals(cookval) && cookval.contains("=")) {
|
|
|
|
|
String key = cookval.substring(0, cookval.indexOf("="));
|
|
|
|
|
String value = cookval.substring(cookval.indexOf("=") + 1);
|
|
|
|
|
if ("SESSION".equals(key.trim()) || key.contains("SESSION")) {
|
|
|
|
|
uid = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ecology=BA0A2738FBB4C7664CEECCC8B0CF408B; HTML_VERSION=1603079097996;
|
|
|
|
|
// ZSMART_LOCALE=en; SESSION=4e101591-da0e-4425-b035-ffe684f85bca;
|
|
|
|
|
// areaId=731; userId=1; orgId=1;
|
|
|
|
|
// CLOUD_APP_NAME=dbeptest7_pot-uportal-core;
|
|
|
|
|
// CLOUD_APP_ID=44074
|
|
|
|
|
|
|
|
|
|
if(StringUtils.isNotEmpty(uid))
|
|
|
|
|
{
|
|
|
|
|
String url = bb.getPropValue("PORTAL_INFO","portal_user_auth");
|
|
|
|
|
if (StringUtils.isNotEmpty(uid)) {
|
|
|
|
|
String url = bb.getPropValue("PORTAL_INFO", "portal_user_auth");
|
|
|
|
|
//String url = "http://172.16.25.133/portal-web/user/current" ;
|
|
|
|
|
bb.writeLog("url:"+url);
|
|
|
|
|
bb.writeLog("url:" + url);
|
|
|
|
|
|
|
|
|
|
HttpRequestUtil HttpRequestUtil = new HttpRequestUtil();
|
|
|
|
|
Map<String,String> headMap = new HashMap<String,String>();
|
|
|
|
|
headMap.put("Cookie","SESSION="+uid);
|
|
|
|
|
String msg = HttpRequestUtil.httpGet1(url,headMap,"UTF-8");
|
|
|
|
|
if(!"".equals(msg))
|
|
|
|
|
{
|
|
|
|
|
Map<String, String> headMap = new HashMap<String, String>();
|
|
|
|
|
headMap.put("Cookie", "SESSION=" + uid);
|
|
|
|
|
String msg = HttpRequestUtil.httpGet1(url, headMap, "UTF-8");
|
|
|
|
|
if (!"".equals(msg)) {
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(msg);
|
|
|
|
|
if("1".equals(jsonObject.getString("resultCode")))
|
|
|
|
|
{
|
|
|
|
|
if ("1".equals(jsonObject.getString("resultCode"))) {
|
|
|
|
|
JSONObject resultObject = jsonObject.getJSONObject("resultObject");
|
|
|
|
|
String staffCode = resultObject.getString("staffCode");
|
|
|
|
|
if(!"".equals(staffCode)){
|
|
|
|
|
String loginid = loginuser.getLoginid();
|
|
|
|
|
if (!(loginid.equals(staffCode))) {
|
|
|
|
|
User user_new = null;
|
|
|
|
|
String sql = "" ;
|
|
|
|
|
if("admin".equals(staffCode)){
|
|
|
|
|
String sql = "";
|
|
|
|
|
if ("admin".equals(staffCode)) {
|
|
|
|
|
staffCode = "sysadmin";
|
|
|
|
|
sql = " select * from hrmresourcemanager where loginid =? ";
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
sql = " select * from HrmResource where loginid =? ";
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("sql:"+sql);
|
|
|
|
|
rs.executeQuery(sql,new Object[]{staffCode});
|
|
|
|
|
if(rs.next()){
|
|
|
|
|
|
|
|
|
|
rs.executeQuery(sql, new Object[]{staffCode});
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
user_new = new User();
|
|
|
|
|
user_new.setUid(rs.getInt("id"));
|
|
|
|
|
user_new.setLoginid(rs.getString("loginid"));
|
|
|
|
@ -175,13 +259,13 @@ public class PortalLoginBeforeFilter implements Filter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
filterChain.doFilter(request, response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void destroy() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
filterChain.doFilter(request, response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void destroy() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|