Browse Source

开源任务材料

10.0
LAPTOP-SB56SG4Q\86185 3 years ago
parent
commit
95fd1756ab
  1. BIN
      JSD-8239 -需求确认书V1.1.docx
  2. 5
      README.md
  3. 23
      plugin.xml
  4. 17
      src/main/java/com/fr/plugin/xxx/sso/CustomLogInOutEventProvider.java
  5. 167
      src/main/java/com/fr/plugin/xxx/sso/SsoFilter.java
  6. 20
      src/main/java/com/fr/plugin/xxx/sso/SsoRequestHandlerBridge.java
  7. 18
      src/main/java/com/fr/plugin/xxx/sso/SsoRequestURLAliasBridge.java
  8. 43
      src/main/java/com/fr/plugin/xxx/sso/SyncDBAccessProvider.java
  9. 21
      src/main/java/com/fr/plugin/xxx/sso/dao/UserInfoDao.java
  10. 104
      src/main/java/com/fr/plugin/xxx/sso/dao/action/UserInfoService.java
  11. 276
      src/main/java/com/fr/plugin/xxx/sso/entity/UserInfoEntity.java
  12. 138
      src/main/java/com/fr/plugin/xxx/sso/handle/SyncHandler.java
  13. 60
      src/main/java/com/fr/plugin/xxx/sso/js/FileDef.java
  14. 24
      src/main/java/com/fr/plugin/xxx/sso/js/JSCSSBridge.java
  15. 16
      src/main/resources/com/fr/plugin/xxx/sso/theme.js
  16. 4
      src/main/resources/conf.properties

BIN
JSD-8239 -需求确认书V1.1.docx

Binary file not shown.

5
README.md

@ -1,3 +1,6 @@
# open-JSD-8239
JSD-8239
JSD-8239 开源任务材料\
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\
仅作为开发者学习参考使用!禁止用于任何商业用途!\
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。

23
plugin.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugin>
<id>com.fr.plugin.xxx.sso</id>
<name><![CDATA[单点登录]]></name>
<active>yes</active>
<version>1.7</version>
<env-version>10.0</env-version>
<jartime>2018-07-31</jartime>
<vendor>fr.open</vendor>
<description><![CDATA[单点登录]]></description>
<change-notes><![CDATA[]]></change-notes>
<extra-core>
<DBAccessProvider class="com.fr.plugin.xxx.sso.SyncDBAccessProvider"/>
</extra-core>
<extra-decision>
<HttpHandlerProvider class="com.fr.plugin.xxx.sso.SsoRequestHandlerBridge"/>
<URLAliasProvider class="com.fr.plugin.xxx.sso.SsoRequestURLAliasBridge" />
<GlobalRequestFilterProvider class="com.fr.plugin.xxx.sso.SsoFilter"/>
<WebResourceProvider class="com.fr.plugin.xxx.sso.js.JSCSSBridge"/>
<LogInOutEventProvider class="com.fr.plugin.xxx.sso.CustomLogInOutEventProvider"/>
</extra-decision>
<function-recorder class="com.fr.plugin.xxx.sso.SsoFilter"/>
</plugin>

17
src/main/java/com/fr/plugin/xxx/sso/CustomLogInOutEventProvider.java

@ -0,0 +1,17 @@
package com.fr.plugin.xxx.sso;
import com.fr.decision.fun.impl.AbstractLogInOutEventProvider;
import com.fr.decision.webservice.login.LogInOutResultInfo;
import com.fr.general.PropertiesUtils;
/**
* @Author fr.open
* @Date 2020/7/18
* @Description
**/
public class CustomLogInOutEventProvider extends AbstractLogInOutEventProvider {
@Override
public String logoutAction(LogInOutResultInfo result) {
return PropertiesUtils.getProperties("conf").getProperty("logout");
}
}

167
src/main/java/com/fr/plugin/xxx/sso/SsoFilter.java

@ -0,0 +1,167 @@
package com.fr.plugin.xxx.sso;
import com.fr.data.NetworkHelper;
import com.fr.decision.authority.data.User;
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
import com.fr.decision.mobile.terminal.TerminalHandler;
import com.fr.decision.webservice.utils.DecisionServiceConstants;
import com.fr.decision.webservice.utils.WebServiceUtils;
import com.fr.decision.webservice.v10.login.LoginService;
import com.fr.decision.webservice.v10.login.TokenResource;
import com.fr.decision.webservice.v10.user.UserService;
import com.fr.general.PropertiesUtils;
import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.transform.FunctionRecorder;
import com.fr.stable.StringUtils;
import com.fr.stable.web.Device;
import com.fr.web.utils.WebUtils;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
/**
* @Author fr.open
* @Date 2021/7/14
* @Description
**/
@FunctionRecorder
public class SsoFilter extends AbstractGlobalRequestFilterProvider {
private static String[] NOT_FILTER = {
"/decision/file",
"/decision/resources",
"/system",
"/materials.min.js.map",
"/remote",
"/login",
"/login/config",
"/sync"
};
@Override
public String filterName() {
return "sso";
}
@Override
public String[] urlPatterns() {
return new String[]{"/*"};
}
@Override
public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
String uid = request.getHeader("OAM_UID");
FineLoggerFactory.getLogger().info("get OAM_UID is {}",uid);
if(uid == null){
uid = request.getHeader("LDAPUID");
FineLoggerFactory.getLogger().info("get LDAPUID is {}",uid);
}
if(uid == null){
uid = request.getHeader("OAM_REMOTE_USER");
FineLoggerFactory.getLogger().info("get OAM_REMOTE_USER is {}",uid);
}
if(isAccept(request) || isLogin(request)){
next(request, response, filterChain);
return;
}
FineLoggerFactory.getLogger().info("get OAM_UID is {}",uid);
if(StringUtils.isNotBlank(uid)){
if(!login(uid.toUpperCase(),request,response)){
return;
}
next(request,response,filterChain);
return;
}
try {
response.sendRedirect(PropertiesUtils.getProperties("conf").getProperty("login"));
} catch (IOException e) {
FineLoggerFactory.getLogger().error(e.getMessage(),e);
}
}
public void next(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) {
try {
filterChain.doFilter(httpServletRequest,httpServletResponse);
} catch (IOException e) {
FineLoggerFactory.getLogger().error(e.getMessage(),e);
} catch (ServletException e) {
FineLoggerFactory.getLogger().error(e.getMessage(),e);
}
}
private boolean isAccept(HttpServletRequest req) {
for (int i = 0; i < NOT_FILTER.length; i++) {
if (req.getRequestURI().contains(NOT_FILTER[i])) {
return true;
}
}
if (req.getRequestURI().endsWith("/.css") || req.getRequestURI().endsWith("/.js")) {
return true;
}
if(req.getRequestURI().endsWith("/view/form") || req.getRequestURI().endsWith("/view/report")){
String viewlet = WebUtils.getHTTPRequestParameter(req, "viewlet");
if(StringUtils.isBlank(viewlet)){
return true;
}
}
return false;
}
private boolean login(String username, HttpServletRequest request, HttpServletResponse response) {
try {
User user = UserService.getInstance().getUserByUserName(username);
if (user == null) {
FineLoggerFactory.getLogger().error("sso >> User \"{}\" does not exist", username);
setError(response, String.format("用户[%s]在本系统中不存在", username));
return false;
}
FineLoggerFactory.getLogger().info("sso >> Getted user: {}", user);
String token = LoginService.getInstance().login(request, response, username);
FineLoggerFactory.getLogger().info("sso >> Getted login token: {}", token);
request.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, token);
FineLoggerFactory.getLogger().info("sso >> User[{}] login successfully", username);
} catch (Exception e) {
FineLoggerFactory.getLogger().error("sso >> Failed to login with[" + username + "]", e);
}
return true;
}
private boolean isLogin(HttpServletRequest request) {
String oldToken = TokenResource.COOKIE.getToken(request);
return oldToken != null && checkTokenValid(request, (String) oldToken);
}
private boolean checkTokenValid(HttpServletRequest req, String token) {
try {
Device device = NetworkHelper.getDevice(req);
LoginService.getInstance().loginStatusValid(token, TerminalHandler.getTerminal(req, device));
return true;
} catch (Exception ignore) {
}
return false;
}
private void setError(HttpServletResponse res, String reason) {
try {
PrintWriter printWriter = WebUtils.createPrintWriter(res);
Map<String, Object> map = new HashMap<>();
map.put("result", InterProviderFactory.getProvider().getLocText("Fine-Engine_Error_Page_Result"));
map.put("reason", reason);
map.put("solution", InterProviderFactory.getProvider().getLocText("Fine-Engine_Please_Contact_Platform_Admin"));
String page = WebServiceUtils.parseWebPageResourceSafe("com/fr/web/controller/decision/entrance/resources/unavailable.html", map);
printWriter.write(page);
printWriter.flush();
printWriter.close();
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
}

20
src/main/java/com/fr/plugin/xxx/sso/SsoRequestHandlerBridge.java

@ -0,0 +1,20 @@
package com.fr.plugin.xxx.sso;
import com.fr.decision.fun.HttpHandler;
import com.fr.decision.fun.impl.AbstractHttpHandlerProvider;
import com.fr.plugin.xxx.sso.handle.SyncHandler;
import com.fr.plugin.transform.FunctionRecorder;
/**
* @author fr.open
* @since 2021/07/28
*/
@FunctionRecorder
public class SsoRequestHandlerBridge extends AbstractHttpHandlerProvider {
@Override
public HttpHandler[] registerHandlers() {
return new HttpHandler[]{
new SyncHandler()
};
}
}

18
src/main/java/com/fr/plugin/xxx/sso/SsoRequestURLAliasBridge.java

@ -0,0 +1,18 @@
package com.fr.plugin.xxx.sso;
import com.fr.decision.fun.impl.AbstractURLAliasProvider;
import com.fr.decision.webservice.url.alias.URLAlias;
import com.fr.decision.webservice.url.alias.URLAliasFactory;
/**
* @author fr.open
* @since 2021/07/28
*/
public class SsoRequestURLAliasBridge extends AbstractURLAliasProvider {
@Override
public URLAlias[] registerAlias() {
return new URLAlias[]{
URLAliasFactory.createPluginAlias("/sync", "/sync", true),
};
}
}

43
src/main/java/com/fr/plugin/xxx/sso/SyncDBAccessProvider.java

@ -0,0 +1,43 @@
package com.fr.plugin.xxx.sso;
import com.fr.db.fun.impl.AbstractDBAccessProvider;
import com.fr.plugin.xxx.sso.dao.UserInfoDao;
import com.fr.plugin.xxx.sso.entity.UserInfoEntity;
import com.fr.stable.db.accessor.DBAccessor;
import com.fr.stable.db.dao.BaseDAO;
import com.fr.stable.db.dao.DAOProvider;
/**
* @Author fr.open
* @Date 2020/7/24
**/
public class SyncDBAccessProvider extends AbstractDBAccessProvider {
private static DBAccessor dbAccessor = null;
public static DBAccessor getDbAccessor() {
return dbAccessor;
}
@Override
public DAOProvider[] registerDAO() {
return new DAOProvider[]{
new DAOProvider() {
@Override
public Class getEntityClass() {
return UserInfoEntity.class;
}
@Override
public Class<? extends BaseDAO> getDAOClass() {
return UserInfoDao.class;
}
}
};
}
@Override
public void onDBAvailable(DBAccessor dbAccessor) {
SyncDBAccessProvider.dbAccessor = dbAccessor;
}
}

21
src/main/java/com/fr/plugin/xxx/sso/dao/UserInfoDao.java

@ -0,0 +1,21 @@
package com.fr.plugin.xxx.sso.dao;
import com.fr.plugin.xxx.sso.entity.UserInfoEntity;
import com.fr.stable.db.dao.BaseDAO;
import com.fr.stable.db.session.DAOSession;
/**
* @Author fr.open
* @Date 2021/7/5
* @Description
**/
public class UserInfoDao extends BaseDAO<UserInfoEntity> {
public UserInfoDao(DAOSession daoSession) {
super(daoSession);
}
@Override
protected Class<UserInfoEntity> getEntityClass() {
return UserInfoEntity.class;
}
}

104
src/main/java/com/fr/plugin/xxx/sso/dao/action/UserInfoService.java

@ -0,0 +1,104 @@
package com.fr.plugin.xxx.sso.dao.action;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.xxx.sso.SyncDBAccessProvider;
import com.fr.plugin.xxx.sso.dao.UserInfoDao;
import com.fr.plugin.xxx.sso.entity.UserInfoEntity;
import com.fr.stable.db.action.DBAction;
import com.fr.stable.db.dao.DAOContext;
import com.fr.stable.query.QueryFactory;
import com.fr.stable.query.restriction.RestrictionFactory;
import java.util.UUID;
/**
* @Author fr.open
* @Date 2021/7/29
* @Description
**/
public class UserInfoService {
/**
* 获取
*
* @param uid
* @return
*/
public static UserInfoEntity getUserInfoByUid(String uid) {
try {
return SyncDBAccessProvider.getDbAccessor().runDMLAction(new DBAction<UserInfoEntity>() {
@Override
public UserInfoEntity run(DAOContext daoContext) throws Exception {
return daoContext.getDAO(UserInfoDao.class).findOne(QueryFactory.create().addRestriction(RestrictionFactory.eq("uid", uid)));
}
});
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return null;
}
/**
* 新增
*
* @param entity
* @return
*/
public static UserInfoEntity create(UserInfoEntity entity) {
try {
return SyncDBAccessProvider.getDbAccessor().runDMLAction(new DBAction<UserInfoEntity>() {
@Override
public UserInfoEntity run(DAOContext daoContext) throws Exception {
entity.setId(UUID.randomUUID().toString());
daoContext.getDAO(UserInfoDao.class).add(entity);
return entity;
}
});
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return null;
}
/**
* 更新
*
* @param entity
* @return
*/
public static UserInfoEntity update(UserInfoEntity entity) {
try {
return SyncDBAccessProvider.getDbAccessor().runDMLAction(new DBAction<UserInfoEntity>() {
@Override
public UserInfoEntity run(DAOContext daoContext) throws Exception {
daoContext.getDAO(UserInfoDao.class).update(entity);
return entity;
}
});
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return null;
}
/**
* 删除
*
* @param uid
* @return
*/
public static UserInfoEntity delete(String uid) {
try {
return SyncDBAccessProvider.getDbAccessor().runDMLAction(new DBAction<UserInfoEntity>() {
@Override
public UserInfoEntity run(DAOContext daoContext) throws Exception {
UserInfoEntity byUid = getUserInfoByUid(uid);
daoContext.getDAO(UserInfoDao.class).remove(byUid.getId());
return byUid;
}
});
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return null;
}
}

276
src/main/java/com/fr/plugin/xxx/sso/entity/UserInfoEntity.java

@ -0,0 +1,276 @@
package com.fr.plugin.xxx.sso.entity;
import com.fr.stable.db.entity.BaseEntity;
import com.fr.third.javax.persistence.Column;
import com.fr.third.javax.persistence.Entity;
import com.fr.third.javax.persistence.Table;
/**
* @Author fr.open
* @Date 2021/7/5
* @Description
**/
@Entity
@Table(name = "plugin_xxx_user_info")
public class UserInfoEntity extends BaseEntity {
private static final long serialVersionUID = 372666463409260435L;
@Column(name = "uid")
private String uid;
@Column(name = "password")
private String password;
@Column(name = "lastName")
private String lastName;
@Column(name = "lastNameCHN")
private String lastNameCHN;
@Column(name = "firstName")
private String firstName;
@Column(name = "firstNameCHN")
private String firstNameCHN;
@Column(name = "name")
private String name;
@Column(name = "displayName")
private String displayName;
@Column(name = "nationalIDLast4")
private String nationalIDLast4;
@Column(name = "email")
private String email;
@Column(name = "buId")
private String buId;
@Column(name = "setId")
private String setId;
@Column(name = "guid")
private String guid;
@Column(name = "empno")
private String empno;
@Column(name = "memo")
private String memo;
@Column(name = "deptId")
private String deptId;
@Column(name = "mobile")
private String mobile;
@Column(name = "startDate")
private String startDate;
@Column(name = "endDate")
private String endDate;
@Column(name = "ext1")
private String ext1;
@Column(name = "ext2")
private String ext2;
@Column(name = "ext3")
private String ext3;
@Column(name = "ext4")
private String ext4;
@Column(name = "ext5")
private String ext5;
@Column(name = "enable")
private Boolean enable;
public UserInfoEntity() {
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastNameCHN() {
return lastNameCHN;
}
public void setLastNameCHN(String lastNameCHN) {
this.lastNameCHN = lastNameCHN;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstNameCHN() {
return firstNameCHN;
}
public void setFirstNameCHN(String firstNameCHN) {
this.firstNameCHN = firstNameCHN;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getNationalIDLast4() {
return nationalIDLast4;
}
public void setNationalIDLast4(String nationalIDLast4) {
this.nationalIDLast4 = nationalIDLast4;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBuId() {
return buId;
}
public void setBuId(String buId) {
this.buId = buId;
}
public String getSetId() {
return setId;
}
public void setSetId(String setId) {
this.setId = setId;
}
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getExt1() {
return ext1;
}
public void setExt1(String ext1) {
this.ext1 = ext1;
}
public String getExt2() {
return ext2;
}
public void setExt2(String ext2) {
this.ext2 = ext2;
}
public String getExt3() {
return ext3;
}
public void setExt3(String ext3) {
this.ext3 = ext3;
}
public String getExt4() {
return ext4;
}
public void setExt4(String ext4) {
this.ext4 = ext4;
}
public String getExt5() {
return ext5;
}
public void setExt5(String ext5) {
this.ext5 = ext5;
}
public boolean isEnable() {
return enable;
}
public void setEnable(boolean enable) {
this.enable = enable;
}
}

138
src/main/java/com/fr/plugin/xxx/sso/handle/SyncHandler.java

@ -0,0 +1,138 @@
package com.fr.plugin.xxx.sso.handle;
import cn.com.crc.syncuser.webservice.ResponseCode;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.json.JSONObject;
import com.fr.json.revise.EmbedJson;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.xxx.sso.dao.action.UserInfoService;
import com.fr.plugin.xxx.sso.entity.UserInfoEntity;
import com.fr.third.fasterxml.jackson.databind.DeserializationFeature;
import com.fr.third.fasterxml.jackson.databind.ObjectMapper;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
/**
* @author fr.open
* @Date 2021/08/17
*/
public class SyncHandler extends BaseHttpHandler {
@Override
public RequestMethod getMethod() {
return RequestMethod.POST;
}
@Override
public String getPath() {
return "/sync";
}
@Override
public boolean isPublic() {
return true;
}
@Override
public void handle(HttpServletRequest req, HttpServletResponse res) {
UserInfoEntity body = getUserFromBody(req);
if (body == null) {
setContent(res, ResponseCode.REQUIRED_IS_NULL, ResponseCode.REQUIRED_IS_NULL_DESC);
return;
}
String type = WebUtils.getHTTPRequestParameter(req, "type");
FineLoggerFactory.getLogger().info("get sync type is {}",type);
UserInfoEntity user = UserInfoService.getUserInfoByUid(body.getUid());
try {
switch (type) {
case "create":
if(user != null){
setContent(res,ResponseCode.USER_EXISTE,ResponseCode.USER_EXISTE_DESC);
return;
}
UserInfoService.create(body);
setContent(res, ResponseCode.SUCCESS,ResponseCode.SUCCESS_DESC);
break;
case "update":
if(user == null){
setContent(res,ResponseCode.USER_NOT_EXISTE,ResponseCode.USER_NOT_EXISTE_DESC);
return;
}
body.setEnable(user.isEnable());
body.setId(user.getId());
UserInfoService.update(body);
setContent(res, ResponseCode.SUCCESS,ResponseCode.SUCCESS_DESC);
break;
case "enable":
if(user == null){
setContent(res,ResponseCode.USER_NOT_EXISTE,ResponseCode.USER_NOT_EXISTE_DESC);
return;
}
body.setId(user.getId());
body.setEnable(true);
UserInfoService.update(body);
setContent(res, ResponseCode.SUCCESS,ResponseCode.SUCCESS_DESC);
break;
case "disable":
if(user == null){
setContent(res,ResponseCode.USER_NOT_EXISTE,ResponseCode.USER_NOT_EXISTE_DESC);
return;
}
body.setId(user.getId());
body.setEnable(false);
UserInfoService.update(body);
setContent(res, ResponseCode.SUCCESS,ResponseCode.SUCCESS_DESC);
break;
case "delete":
if(user == null){
setContent(res,ResponseCode.USER_NOT_EXISTE,ResponseCode.USER_NOT_EXISTE_DESC);
return;
}
UserInfoService.delete(body.getUid());
setContent(res, ResponseCode.SUCCESS,ResponseCode.SUCCESS_DESC);
break;
default:
setContent(res, ResponseCode.OPERATE_CODE_ERROR, ResponseCode.OPERATE);
break;
}
}catch (Exception e){
FineLoggerFactory.getLogger().error(e.getMessage(),e);
setContent(res, ResponseCode.UNKNOW_ERROR, ResponseCode.UNKNOW_ERROR_DESC);
}
}
private UserInfoEntity getUserFromBody(HttpServletRequest req) {
try {
BufferedReader br = req.getReader();
String str = "";
String listString = "";
while ((str = br.readLine()) != null) {
listString += str;
}
JSONObject jsonObject = new JSONObject(listString);
FineLoggerFactory.getLogger().info("get sync body is {}",jsonObject);
ObjectMapper mapper = EmbedJson.MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper.convertValue(jsonObject, UserInfoEntity.class);
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return null;
}
private void setContent(HttpServletResponse res, String state, String mess) {
try {
WebUtils.printAsJSON(res, JSONObject.create().put("code", state).put("mess", mess));
} catch (Exception ex) {
FineLoggerFactory.getLogger().error(ex.getMessage(), ex);
}
}
}

60
src/main/java/com/fr/plugin/xxx/sso/js/FileDef.java

@ -0,0 +1,60 @@
package com.fr.plugin.xxx.sso.js;
import com.fr.plugin.transform.ExecuteFunctionRecord;
import com.fr.web.struct.Component;
import com.fr.web.struct.Filter;
import com.fr.web.struct.browser.RequestClient;
import com.fr.web.struct.category.ScriptPath;
import com.fr.web.struct.category.StylePath;
/**
* @author fr.open
* @date 2021/8/12
*/
public class FileDef extends Component {
public static final FileDef KEY = new FileDef();
private FileDef() {
}
/**
* 返回需要引入的JS脚本路径
*
* @param client 请求客户端描述
* @return JS脚本路径
*/
@Override
public ScriptPath script(RequestClient client) {
//如果不需要就直接返回 ScriptPath.EMPTY
return ScriptPath.build("com/fr/plugin/xxx/sso/theme.js");
}
/**
* 返回需要引入的CSS样式路径
*
* @param client 请求客户端描述
* @return CSS样式路径
*/
@Override
public StylePath style(RequestClient client) {
//如果不需要就直接返回 StylePath.EMPTY;
return StylePath.EMPTY;
}
/**
* 通过给定的资源过滤器控制是否加载这个资源
*
* @return 资源过滤器
*/
@ExecuteFunctionRecord
@Override
public Filter filter() {
return new Filter() {
@Override
public boolean accept() {
//任何情况下我们都在平台组件加载时加载我们的组件
return true;
}
};
}
}

24
src/main/java/com/fr/plugin/xxx/sso/js/JSCSSBridge.java

@ -0,0 +1,24 @@
package com.fr.plugin.xxx.sso.js;
import com.fr.decision.fun.impl.AbstractWebResourceProvider;
import com.fr.decision.web.LoginComponent;
import com.fr.web.struct.Atom;
/**
* @Author fr.open
* @Date 2021/8/12
* @Description
**/
public class JSCSSBridge extends AbstractWebResourceProvider {
@Override
public Atom attach() {
//在平台主组件加载时添加我们自己的组件
return LoginComponent.KEY;
}
@Override
public Atom client() {
//我们自己要引入的组件
return FileDef.KEY;
}
}

16
src/main/resources/com/fr/plugin/xxx/sso/theme.js

@ -0,0 +1,16 @@
/*! fine-decision-webui 2018-10-14 15:29:23 */
!(function () {
Dec.Utils = Dec.Utils || {};
BI.extend(Dec.Utils, {
login: function (e, t) {
e.username = e.username.toUpperCase();
Dec.reqPost("/login", e, function (e) {
t(e);
})
}
})
}());

4
src/main/resources/conf.properties

@ -0,0 +1,4 @@
##\u767B\u51FA\u5730\u5740
logout=
##\u8DF3\u8F6C\u767B\u5F55\u5730\u5740
login=
Loading…
Cancel
Save