/* * Copyright (C), 2018-2021 * Project: starter * FileName: OAuthLogin * Author: Louis * Date: 2021/3/30 22:09 */ package com.fr.plugin.idnf.request; import com.fanruan.api.decision.login.LoginKit; import com.fanruan.api.decision.user.UserKit; import com.fanruan.api.i18n.I18nKit; import com.fanruan.api.log.LogKit; import com.fanruan.api.net.NetworkKit; import com.fanruan.api.util.StringKit; import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; import com.fr.decision.webservice.utils.DecisionServiceConstants; import com.fr.decision.webservice.v10.login.LoginService; import com.fr.plugin.context.PluginContexts; import com.fr.plugin.idnf.config.IdnfConfig; import com.fr.stable.fun.Authorize; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import static com.fr.plugin.idnf.config.IdnfConfig.PLUGIN_ID; import static com.fr.plugin.idnf.service.AuthController.AUTH_PATH; /** *
* * * @author fr.open * @since 1.0.0 */ @Authorize(callSignKey = PLUGIN_ID) public class OAuthLogin extends AbstractGlobalRequestFilterProvider { private IdnfConfig config; /** * 过滤器名称 * * @return */ @Override public String filterName() { return "idnfFilter"; } /** * 过滤规则 * * @return */ @Override public String[] urlPatterns() { return new String[]{"/decision", "/decision/view/form", "/decision/view/report", "/decision/v10/entry/access/*", "/decision/v5/design/report/*", AUTH_PATH}; } /** * 过滤器初始化 * * @param filterConfig */ @Override public void init(FilterConfig filterConfig) { this.config = IdnfConfig.getInstance(); super.init(filterConfig); } /** * 过滤器处理 * * @param request * @param response * @param filterChain */ @Override public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { try { operation(request, response); filterChain.doFilter(request, response); } catch (Exception e) { LogKit.error(e.getMessage(), e); } } /** * 用户验证登陆操作 * * @param req * @param res * @throws Exception */ private void operation(HttpServletRequest req, HttpServletResponse res) throws Exception { // 已登录 if (LoginService.getInstance().isLogged(req)) { return; } String code = NetworkKit.getHTTPRequestParameter(req, this.config.getKeyCode()); LogKit.info("idnf-OAuthLogin-operation-code:{}", code); if (StringKit.isBlank(code)) { return; } String username = code; if (StringKit.isEmpty(username) || !UserKit.existUsername(username)) { return; } if (!PluginContexts.currentContext().isAvailable()) { LogKit.error(I18nKit.getLocText("Plugin-idnf_Licence_Expired")); return; } String tokenFR = LoginKit.login(req, res, username); req.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, tokenFR); } }