From c8f4dd275cb90324e4de10c73898c44ae844d2d5 Mon Sep 17 00:00:00 2001 From: Elijah Date: Mon, 25 Feb 2019 15:51:49 +0800 Subject: [PATCH] =?UTF-8?q?DEC-6360=20URL=E7=99=BB=E5=BD=95=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.xml | 117 ++++++++++++++++++ lib/.keep | 0 plugin.xml | 18 +++ pom.xml | 15 +++ .../url/login/LoginHttpHandlerProvider.java | 19 +++ .../url/login/LoginUrlAliasProvider.java | 20 +++ .../decision/url/login/web/LoginAction.java | 80 ++++++++++++ 7 files changed, 269 insertions(+) create mode 100644 build.xml create mode 100644 lib/.keep create mode 100644 plugin.xml create mode 100644 pom.xml create mode 100644 src/main/java/com/fr/plugin/decision/url/login/LoginHttpHandlerProvider.java create mode 100644 src/main/java/com/fr/plugin/decision/url/login/LoginUrlAliasProvider.java create mode 100644 src/main/java/com/fr/plugin/decision/url/login/web/LoginAction.java diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..e29090b --- /dev/null +++ b/build.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/.keep b/lib/.keep new file mode 100644 index 0000000..e69de29 diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..3351235 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,18 @@ + + + com.fr.plugin.decision.url.login + + yes + no + 1.0 + 10.0~ + 2018-10-13 + finereport.Elijah + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c8efec5 --- /dev/null +++ b/pom.xml @@ -0,0 +1,15 @@ + + + + starter + com.fr.plugin + 10.0 + + 4.0.0 + + plugin-decision-url-login + + + \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/decision/url/login/LoginHttpHandlerProvider.java b/src/main/java/com/fr/plugin/decision/url/login/LoginHttpHandlerProvider.java new file mode 100644 index 0000000..1ecac28 --- /dev/null +++ b/src/main/java/com/fr/plugin/decision/url/login/LoginHttpHandlerProvider.java @@ -0,0 +1,19 @@ +package com.fr.plugin.decision.url.login; + +import com.fr.decision.fun.HttpHandler; +import com.fr.decision.fun.impl.AbstractHttpHandlerProvider; +import com.fr.plugin.decision.url.login.web.LoginAction; + +/** + * @Author: Elijah + * @Create: 2019-02-22 + * @Desciption: + */ +public class LoginHttpHandlerProvider extends AbstractHttpHandlerProvider { + @Override + public HttpHandler[] registerHandlers() { + return new HttpHandler[] { + new LoginAction() + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/decision/url/login/LoginUrlAliasProvider.java b/src/main/java/com/fr/plugin/decision/url/login/LoginUrlAliasProvider.java new file mode 100644 index 0000000..59312ff --- /dev/null +++ b/src/main/java/com/fr/plugin/decision/url/login/LoginUrlAliasProvider.java @@ -0,0 +1,20 @@ +package com.fr.plugin.decision.url.login; + +import com.fr.decision.fun.impl.AbstractURLAliasProvider; +import com.fr.decision.webservice.url.alias.URLAlias; +import com.fr.decision.webservice.url.alias.URLAliasFactory; + +/** + * @Author: Elijah + * @Create: 2019-02-23 + * @Desciption: + */ +public class LoginUrlAliasProvider extends AbstractURLAliasProvider { + + @Override + public URLAlias[] registerAlias() { + return new URLAlias[]{ + URLAliasFactory.createPluginAlias("/login", "/login", true) + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/decision/url/login/web/LoginAction.java b/src/main/java/com/fr/plugin/decision/url/login/web/LoginAction.java new file mode 100644 index 0000000..fb496b0 --- /dev/null +++ b/src/main/java/com/fr/plugin/decision/url/login/web/LoginAction.java @@ -0,0 +1,80 @@ +package com.fr.plugin.decision.url.login.web; + +import com.fr.base.TemplateUtils; +import com.fr.decision.fun.impl.BaseHttpHandler; +import com.fr.decision.webservice.bean.authentication.LoginRequestInfoBean; +import com.fr.decision.webservice.bean.authentication.LoginResponseInfoBean; +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.general.web.ParameterConstants; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.stable.StringUtils; +import com.fr.third.springframework.web.bind.annotation.RequestMethod; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +/** + * @Author: Elijah + * @Create: 2019-02-22 + * @Desciption: + */ +@FunctionRecorder +public class LoginAction extends BaseHttpHandler { + + private static final int REMEMBER_PASSWORD = -2; + + @Override + public RequestMethod getMethod() { + return RequestMethod.GET; + } + + @Override + public String getPath() { + return "/login"; + } + + @Override + public boolean isPublic() { + return true; + } + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response) throws Exception { + String username = WebUtils.getHTTPRequestParameter(request, ParameterConstants.FINE_USERNAME); + String password = WebUtils.getHTTPRequestParameter(request, ParameterConstants.FINE_PASSWORD); + int validity = WebUtils.getHTTPRequestIntParameter(request, "validity"); + String origin = WebUtils.getHTTPRequestParameter(request, "origin"); + LoginRequestInfoBean requestInfoBean = new LoginRequestInfoBean(); + requestInfoBean.setUsername(username); + requestInfoBean.setOrigin(origin); + requestInfoBean.setPassword(password); + requestInfoBean.setValidity(validity); + requestInfoBean.setSliderToken(""); + LoginResponseInfoBean responseInfoBean = LoginService.getInstance().login(request, response, requestInfoBean); + origin = StringUtils.isEmpty(origin) ? TemplateUtils.render(DecisionServiceConstants.MAIN_PAGE_URL) : WebServiceUtils.getBase64DecodeStr(origin); + writeToken2Cookie(response, responseInfoBean.getAccessToken(), responseInfoBean.getValidity()); + response.sendRedirect(origin); + } + + private void writeToken2Cookie(HttpServletResponse response, String token, int validity) { + try { + if (StringUtils.isNotEmpty(token)) { + Cookie cookie = new Cookie(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, token); + long cookieLife = validity == REMEMBER_PASSWORD ? DecisionServiceConstants.REMEMBER_PASSWORD_LIFE : validity; + cookie.setMaxAge((int) cookieLife); + cookie.setPath("/"); + response.addCookie(cookie); + } else { + FineLoggerFactory.getLogger().error("empty token cannot save."); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } +} \ No newline at end of file