去掉默认渲染发布标题信息\增加oauth认证跳转页面
This commit is contained in:
parent
3a0f29f9f2
commit
12f1d4fd7c
Binary file not shown.
@ -72,7 +72,7 @@ public class GetSomeIndexController {
|
||||
}
|
||||
bo.set("WSID", "7d3ca852-a0bd-42e6-80b1-3dcea6f55083");
|
||||
bo.set("RELEASE_INSTRUCTIONS",
|
||||
"<div id=\"RELEASE_INSTRUCTIONS_htmlRead\" class=\"readonly-html-div\" style=\"width: 100%;\"><style style=\"display: none;\">#RELEASE_INSTRUCTIONS_htmlRead img{vertical-align:bottom}li{list-style: inherit;}</style><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\"><br></span></strong></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\">关于发布《XXXXXXXXXXXX》的通知</span></strong><br></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:14px\"> </span></strong></p><p style=\"margin: 0px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">各事业部、分(子)公司、总部各部(室):</span></p><p style=\"margin: 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">为</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">,现下发《</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">》,请各单位遵照执行。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">特此通知。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"text-indent: 299px; font-family: 仿宋_GB2312; font-size: 21px;\">(xxxxxxxxx)单位名称</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"font-family: 仿宋_GB2312; font-size: 21px;\">2022年7月27日</span></p></div>");// 流程实例状态
|
||||
"<div id=\"RELEASE_INSTRUCTIONS_htmlRead\" class=\"readonly-html-div\" style=\"width: 100%;\"><style style=\"display: none;\">#RELEASE_INSTRUCTIONS_htmlRead img{vertical-align:bottom}li{list-style: inherit;}</style><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\"><br></span></strong></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><br></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:14px\"> </span></strong></p><p style=\"margin: 0px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">各事业部、分(子)公司、总部各部(室):</span></p><p style=\"margin: 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">为</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">,现下发《</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">》,请各单位遵照执行。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">特此通知。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"text-indent: 299px; font-family: 仿宋_GB2312; font-size: 21px;\">(xxxxxxxxx)单位名称</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"font-family: 仿宋_GB2312; font-size: 21px;\">2022年7月27日</span></p></div>");// 流程实例状态
|
||||
SDK.getBOAPI().create("BO_ACT_COE_PUBLISH", bo, processInstance, userContext);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,257 @@
|
||||
package com.awspaas.user.apps.integration.oauth;
|
||||
|
||||
import com.actionsoft.bpms.bo.engine.BO;
|
||||
import com.actionsoft.bpms.commons.oauth.AbstractOauth;
|
||||
import com.actionsoft.bpms.org.model.DepartmentModel;
|
||||
import com.actionsoft.bpms.server.RequestParams;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.bpms.util.UtilString;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.actionsoft.sdk.local.api.LogAPI;
|
||||
import com.actionsoft.sdk.local.api.Logger;
|
||||
import com.actionsoft.sdk.local.api.ORGAPI;
|
||||
import com.actionsoft.sdk.service.model.UserModel;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yili.wsclient.ClientService;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* OA系统 跳转登陆PAl
|
||||
*
|
||||
* @author lihy
|
||||
*/
|
||||
|
||||
public class OauthLoginView extends AbstractOauth {
|
||||
private Logger logger = LogAPI.getLogger(OauthLoginView.class);
|
||||
|
||||
static String clientId = "oaprocess";
|
||||
static String clientSecret = "qwer1234";
|
||||
/**
|
||||
* 这个方法代表是否有登录授权页,返回的值取决于三方系统提供的 SSO 认证方式。一类认 证方式如 Oauth2.0
|
||||
* 认证,需要先跳转到三方系统的登录授权页面,授权成功后再跳转到调 用方指定的页面,这类认证方式下,hasOauthPage()方法需要返回 true。
|
||||
* 另外一类认证时不 需要跳转到登录授权页, 会直接传过来 ticket 或者 token 参数, hasOauthPage()方法需要返 回 false。
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean hasOauthPage() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果 hasOauthPage()方法返回的值是 false, 返回 null 即可。 如果 hasOauthPage()方法返回 的值是
|
||||
* true,则此处返回三方系统的登录授权页地址。
|
||||
* @param requestParams
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getOauthPage(RequestParams requestParams) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public String validate(RequestParams params) throws IOException {
|
||||
BO bo = new BO();
|
||||
String id = params.get("id");
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
long begintime = System.currentTimeMillis();
|
||||
bo.set("BEGIN_TIME",sdf.format(new Date()));
|
||||
String userid = "";
|
||||
long login_end_time = 0L;
|
||||
if (StringUtils.isNotEmpty(params.get("casaccount"))){
|
||||
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", params.get("casaccount")).detail();
|
||||
String workcode = "";
|
||||
if (detail!=null){
|
||||
workcode= detail.getString("WORKCODE");
|
||||
}else {
|
||||
workcode= params.get("casaccount");
|
||||
}
|
||||
|
||||
login_end_time = System.currentTimeMillis();
|
||||
bo.set("END_TIME",login_end_time);
|
||||
bo.set("USER_ID",params.get("casaccount"));
|
||||
UserContext userContext = UserContext.fromUID("admin");
|
||||
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
|
||||
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
|
||||
try {
|
||||
setUserLog(params.get("casaccount"),"1");
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
}
|
||||
return workcode;
|
||||
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(params.get("usercode"))){
|
||||
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", params.get("usercode")).detail();
|
||||
String workcode = "";
|
||||
if (detail!=null){
|
||||
workcode = detail.getString("WORKCODE");
|
||||
}else {
|
||||
workcode = params.get("usercode");
|
||||
}
|
||||
login_end_time = System.currentTimeMillis();
|
||||
bo.set("END_TIME",sdf.format(new Date()));
|
||||
bo.set("USER_ID",params.get("usercode"));
|
||||
UserContext userContext = UserContext.fromUID("admin");
|
||||
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
|
||||
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
|
||||
try {
|
||||
setUserLog(params.get("usercode"),"1");
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
}
|
||||
return workcode;
|
||||
}
|
||||
|
||||
|
||||
logger.info("单点登录验证---------"+params);
|
||||
try {
|
||||
|
||||
long loginbegintime = System.currentTimeMillis();
|
||||
bo.set("LOGIN_BEGIN_TIME",sdf.format(new Date()));
|
||||
String redirect_uri = params.get("code");
|
||||
|
||||
|
||||
if(StringUtils.isEmpty(redirect_uri)){
|
||||
logger.error("跳转地址为空,请重新输入");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
App app = new App();
|
||||
String tokens = app.getTokens("http://10.114.11.135:8088/portal/yiliView.html", redirect_uri);
|
||||
if(StringUtils.isEmpty(tokens)){
|
||||
logger.error("获取token为空,请重新输入登录信息获取code");
|
||||
return null;
|
||||
}else {
|
||||
JSONObject jsonObjects = JSONObject.parseObject(tokens);
|
||||
String access_token = jsonObjects.getString("access_token");
|
||||
String userInfo = app.getUserInfo(access_token);
|
||||
|
||||
if (StringUtils.isNotEmpty(userInfo)){
|
||||
JSONObject json = JSONObject.parseObject(userInfo);
|
||||
//System.out.println("json-=====>>>>"+json);
|
||||
if (StringUtils.isNotEmpty(json.getString("employeenumber"))){
|
||||
//System.out.println("userid》》》》》》》》》》"+json.getString("employeenumber"));
|
||||
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
|
||||
try {
|
||||
setUserLog(json.getString("employeenumber"),"1");
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
userid = json.getString("employeenumber");
|
||||
login_end_time = System.currentTimeMillis();
|
||||
bo.set("END_TIME",sdf.format(new Date()));
|
||||
bo.set("SCENDTIME",(login_end_time-loginbegintime));
|
||||
bo.set("LOGIN_END_TIME",sdf.format(new Date()));
|
||||
bo.set("USER_ID",userid);
|
||||
UserContext userContext = UserContext.fromUID("admin");
|
||||
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
|
||||
|
||||
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", json.getString("employeenumber")).detail();
|
||||
String workcode = "";
|
||||
if(detail!=null){
|
||||
workcode = detail.getString("WORKCODE");
|
||||
}else {
|
||||
workcode = json.getString("employeenumber");
|
||||
}
|
||||
|
||||
return workcode;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("统一身份认证失败!", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public long getCookieTime(UserModel user) {
|
||||
//System.out.println("session时间>>>>>>>>>>"+user.getSessionTime());
|
||||
//下面的值代表与 AWS PaaS 会话过期时间一致,
|
||||
//因平台会话过期时间以分钟计,所以需要乘以 60
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一身份认证接口
|
||||
* @param1 webserviceUrl 身份认证接口地址
|
||||
* @param2 casaccount 登录账号 OA账号
|
||||
* @param3 appaccount 应用系统登录账号
|
||||
* @param4 appid 应用系统id
|
||||
* @param5 validcode 验证码
|
||||
* @return true/false
|
||||
*/
|
||||
public static String getToken(String casaccount,String appaccount,String appid,String validcode) {
|
||||
//身份认证接口地址
|
||||
String webserviceUrl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "webserviceUrl");
|
||||
String checkLogin = ClientService.checkLogin(webserviceUrl,casaccount,appaccount,appid,validcode);
|
||||
return checkLogin ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String geAuthorization(String clientId, String clientSecret) {
|
||||
try {
|
||||
byte[] key = (clientId + ":" + clientSecret).getBytes("utf-8");
|
||||
String cc = new String(Base64.encodeBase64(key), "utf-8");
|
||||
// String cc = new String(java.util.Base64.getEncoder().encode(key), "utf-8");
|
||||
return "Basic " + cc;
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 用户登录日志
|
||||
* @param userid
|
||||
* @param logType
|
||||
*/
|
||||
public void setUserLog(String userid,String logType) {
|
||||
System.err.println("用户登录记录存入日志========>"+userid+"_类型:"+logType);
|
||||
if (UtilString.isNotEmpty(userid)) {
|
||||
String logTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||
BO bo = new BO();
|
||||
/*String slq = "SELECT ID,LOGINCOUNTS FROM BO_EU_USER_LOGIN_LOG WHERE LOGINUSERNAME = '"+userid+"' AND LOGINTIME = '"+logTime+"'";
|
||||
List<RowMap> maps = DBSql.getMaps(slq);
|
||||
if(maps.size()!=0) {
|
||||
bo = SDK.getBOAPI().get("BO_EU_USER_LOGIN_LOG", maps.get(0).getString("ID"));
|
||||
bo.set("LOGINCOUNTS", maps.get(0).getInt("LOGINCOUNTS")+1);
|
||||
SDK.getBOAPI().update("BO_EU_USER_LOGIN_LOG", bo);
|
||||
}else {*/
|
||||
ORGAPI orgapi = SDK.getORGAPI();
|
||||
com.actionsoft.bpms.org.model.UserModel user = orgapi.getUser(userid);
|
||||
DepartmentModel departmentByUser = orgapi.getDepartmentByUser(userid);
|
||||
bo.set("LOGINUSERNAME", userid);
|
||||
bo.set("USERBUNAME",user.getExt4());
|
||||
bo.set("USERPOST",user.getPositionName());
|
||||
bo.set("USERDEPTNAME", departmentByUser.getPathNameOfCache());
|
||||
bo.set("LOGINTIME", logTime);
|
||||
bo.set("LOGINCOUNTS", 1);
|
||||
bo.set("LOGTYPE", Integer.valueOf(logType));
|
||||
|
||||
SDK.getBOAPI().createDataBO("BO_EU_USER_LOGIN_LOG", bo, UserContext.fromUID("admin"));
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -10,6 +10,7 @@ import com.actionsoft.apps.resource.plugin.profile.OauthPluginProfile;
|
||||
import com.actionsoft.apps.resource.plugin.profile.ProcessPublicEventPluginProfile;
|
||||
import com.awspaas.user.apps.integration.oa.TaskListener;
|
||||
import com.awspaas.user.apps.integration.oauth.OauthLogin;
|
||||
import com.awspaas.user.apps.integration.oauth.OauthLoginView;
|
||||
import com.awspaas.user.apps.integration.oauth.ProcessOathLogin;
|
||||
|
||||
/**
|
||||
@ -25,6 +26,7 @@ public class Plugins implements PluginListener {
|
||||
list.add(new ProcessPublicEventPluginProfile(TaskListener.class.getName(), "待办推送监听器"));
|
||||
list.add(new OauthPluginProfile("oauthLogin", OauthLogin.class.getName(), "OA系统 跳转登陆PAl"));
|
||||
list.add(new OauthPluginProfile("processOathLogin", ProcessOathLogin.class.getName(), "流程中心发布"));
|
||||
list.add(new OauthPluginProfile("oauthLoginView", OauthLoginView.class.getName(), "OA系统跳转文件查询页面"));
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user