Mattia Gosetto
4 anni fa
50 ha cambiato i file con 26 aggiunte e 577 eliminazioni
@ -1,27 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<classpath> |
|
||||||
<classpathentry kind="src" path="docroot/WEB-INF/src"/> |
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_79"> |
|
||||||
<attributes> |
|
||||||
<attribute name="owner.project.facets" value="java"/> |
|
||||||
</attributes> |
|
||||||
</classpathentry> |
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.liferay.ide.eclipse.server.tomcat.runtimeClasspathProvider/Liferay v6.2 CE (Tomcat 7)"> |
|
||||||
<attributes> |
|
||||||
<attribute name="owner.project.facets" value="jst.web"/> |
|
||||||
</attributes> |
|
||||||
</classpathentry> |
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> |
|
||||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> |
|
||||||
<classpathentry kind="con" path="com.liferay.ide.eclipse.server.plugin.container/hook"> |
|
||||||
<attributes> |
|
||||||
<attribute name="org.eclipse.jst.component.nondependency" value=""/> |
|
||||||
</attributes> |
|
||||||
</classpathentry> |
|
||||||
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=sicilia-login-hook&ivyXmlPath=ivy.xml&confs=*&ivySettingsPath=%24%7Bliferay_sdk_dir%3Asicilia-login-hook%7D%2Fivy-settings.xml&loadSettingsOnDemand=false&ivyUserDir=%24%7Bliferay_sdk_dir%3Asicilia-login-hook%7D%2F.ivy&propertyFiles="> |
|
||||||
<attributes> |
|
||||||
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> |
|
||||||
</attributes> |
|
||||||
</classpathentry> |
|
||||||
<classpathentry kind="output" path="docroot/WEB-INF/classes"/> |
|
||||||
</classpath> |
|
@ -1,37 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<projectDescription> |
|
||||||
<name>sicilia-login-hook</name> |
|
||||||
<comment></comment> |
|
||||||
<projects> |
|
||||||
</projects> |
|
||||||
<buildSpec> |
|
||||||
<buildCommand> |
|
||||||
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name> |
|
||||||
<arguments> |
|
||||||
</arguments> |
|
||||||
</buildCommand> |
|
||||||
<buildCommand> |
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name> |
|
||||||
<arguments> |
|
||||||
</arguments> |
|
||||||
</buildCommand> |
|
||||||
<buildCommand> |
|
||||||
<name>org.eclipse.wst.common.project.facet.core.builder</name> |
|
||||||
<arguments> |
|
||||||
</arguments> |
|
||||||
</buildCommand> |
|
||||||
<buildCommand> |
|
||||||
<name>org.eclipse.wst.validation.validationbuilder</name> |
|
||||||
<arguments> |
|
||||||
</arguments> |
|
||||||
</buildCommand> |
|
||||||
</buildSpec> |
|
||||||
<natures> |
|
||||||
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> |
|
||||||
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> |
|
||||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> |
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature> |
|
||||||
<nature>org.apache.ivyde.eclipse.ivynature</nature> |
|
||||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature> |
|
||||||
</natures> |
|
||||||
</projectDescription> |
|
@ -1,12 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<classpath> |
|
||||||
<classpathentry kind="src" path="docroot"/> |
|
||||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/> |
|
||||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject"> |
|
||||||
<attributes> |
|
||||||
<attribute name="hide" value="true"/> |
|
||||||
</attributes> |
|
||||||
</classpathentry> |
|
||||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/> |
|
||||||
<classpathentry kind="output" path=""/> |
|
||||||
</classpath> |
|
@ -1,7 +0,0 @@ |
|||||||
eclipse.preferences.version=1 |
|
||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled |
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 |
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.7 |
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
|
||||||
org.eclipse.jdt.core.compiler.source=1.7 |
|
@ -1,8 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> |
|
||||||
<wb-module deploy-name="sicilia-login-hook"> |
|
||||||
<wb-resource deploy-path="/" source-path="/docroot" tag="defaultRootSource"/> |
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/docroot/WEB-INF/src"/> |
|
||||||
<property name="context-root" value="sicilia-login-hook"/> |
|
||||||
<property name="java-output-path" value="/sicilia-login-hook/docroot/WEB-INF/classes"/> |
|
||||||
</wb-module> |
|
||||||
</project-modules> |
|
@ -1,7 +0,0 @@ |
|||||||
<root> |
|
||||||
<facet id="liferay.hook"> |
|
||||||
<node name="libprov"> |
|
||||||
<attribute name="provider-id" value="com.liferay.ide.eclipse.plugin.hook.libraryProvider"/> |
|
||||||
</node> |
|
||||||
</facet> |
|
||||||
</root> |
|
@ -1,11 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<faceted-project> |
|
||||||
<runtime name="Liferay v6.2 CE (Tomcat 7)"/> |
|
||||||
<fixed facet="jst.web"/> |
|
||||||
<fixed facet="java"/> |
|
||||||
<fixed facet="wst.jsdt.web"/> |
|
||||||
<installed facet="java" version="1.7"/> |
|
||||||
<installed facet="jst.web" version="3.0"/> |
|
||||||
<installed facet="liferay.hook" version="6.0"/> |
|
||||||
<installed facet="wst.jsdt.web" version="1.0"/> |
|
||||||
</faceted-project> |
|
@ -1 +0,0 @@ |
|||||||
org.eclipse.wst.jsdt.launching.baseBrowserLibrary |
|
@ -1 +0,0 @@ |
|||||||
Window |
|
@ -1,6 +0,0 @@ |
|||||||
<?xml version="1.0"?> |
|
||||||
<!DOCTYPE project> |
|
||||||
|
|
||||||
<project name="sicilia-login-hook" basedir="." default="deploy"> |
|
||||||
<import file="../build-common-hook.xml" /> |
|
||||||
</project> |
|
@ -1,3 +0,0 @@ |
|||||||
Manifest-Version: 1.0 |
|
||||||
Class-Path: |
|
||||||
|
|
@ -1 +0,0 @@ |
|||||||
/classes/ |
|
@ -1,16 +0,0 @@ |
|||||||
<?xml version="1.0"?> |
|
||||||
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd"> |
|
||||||
|
|
||||||
<hook> |
|
||||||
<portal-properties>portal.properties</portal-properties> |
|
||||||
<servlet-filter> |
|
||||||
<servlet-filter-name>Sicilia SSO</servlet-filter-name> |
|
||||||
<servlet-filter-impl>it.mwg.sicilia.login.SiciliaLoginFilter</servlet-filter-impl> |
|
||||||
</servlet-filter> |
|
||||||
<servlet-filter-mapping> |
|
||||||
<servlet-filter-name>Sicilia SSO</servlet-filter-name> |
|
||||||
<url-pattern>/c/portal/login</url-pattern> |
|
||||||
<dispatcher>FORWARD</dispatcher> |
|
||||||
<dispatcher>REQUEST</dispatcher> |
|
||||||
</servlet-filter-mapping> |
|
||||||
</hook> |
|
@ -1,11 +0,0 @@ |
|||||||
name=Sicilia Login Hook |
|
||||||
module-group-id=liferay |
|
||||||
module-incremental-version=1 |
|
||||||
tags= |
|
||||||
short-description= |
|
||||||
long-description= |
|
||||||
change-log= |
|
||||||
page-url=http://www.liferay.com |
|
||||||
author=Liferay, Inc. |
|
||||||
licenses=LGPL |
|
||||||
liferay-versions=6.2.0+ |
|
@ -1,46 +0,0 @@ |
|||||||
package it.mwg.sicilia.constants; |
|
||||||
|
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
public class ApiConstants { |
|
||||||
public static final String LABEL_ERROR_CODE = "code"; |
|
||||||
public static final String LABEL_DESCRIPTION = "description"; |
|
||||||
public static final String LABEL_STATUS = "status"; |
|
||||||
|
|
||||||
public static final int ERROR_OK = 0; |
|
||||||
public static final int ERROR_INVALID_AUTH = 1; |
|
||||||
public static final int ERROR_INVALID_LOGIN = 2; |
|
||||||
public static final int ERROR_INVALID_TOKEN = 3; |
|
||||||
public static final int ERROR_INVALID_INPUT = 4; |
|
||||||
public static final int ERROR_MISSING_PARAMETER = 5; |
|
||||||
public static final int ERROR_INVALID_PASSWORD = 6; |
|
||||||
|
|
||||||
public static final String STATUS_OK = "success"; |
|
||||||
public static final String STATUS_ERROR = "error"; |
|
||||||
|
|
||||||
public static final String API_USERNAME = "sismica"; |
|
||||||
public static final String API_PASSWORD = "4Tr-D%fO!sli5"; |
|
||||||
|
|
||||||
public static final String PARAMETER_AUTH = "auth"; |
|
||||||
public static final String PARAMETER_CALLBACK_URL = "callback"; |
|
||||||
public static final String PARAMETER_TOKEN = "token"; |
|
||||||
public static final String PARAMETER_USERNAME = "username"; |
|
||||||
public static final String PARAMETER_PASSWORD = "password"; |
|
||||||
public static final String PARAMETER_FIRST_NAME = "nome"; |
|
||||||
public static final String PARAMETER_LAST_NAME = "cognome"; |
|
||||||
public static final String PARAMETER_CODICE_FISCALE = "codice_fiscale"; |
|
||||||
|
|
||||||
private static final String SESSION_BASE = "SICILIA_HOOK_"; |
|
||||||
public static final String SESSION_AUTH = SESSION_BASE + PARAMETER_AUTH.toUpperCase(); |
|
||||||
public static final String SESSION_TOKEN = SESSION_BASE + PARAMETER_TOKEN.toUpperCase(); |
|
||||||
public static final String SESSION_USER_DATA = SESSION_BASE + "USER_DATA"; |
|
||||||
|
|
||||||
public static final String LOGIN_SERVER = "https://autenticazione.lavoripubblici.sicilia.it/"; |
|
||||||
private static final String ENDPOINT_BASE = LOGIN_SERVER + "api/v1/"; |
|
||||||
public static final String ENDPOINT_LOGIN = ENDPOINT_BASE + "login.cgi"; |
|
||||||
public static final String ENDPOINT_GET_TOKEN = ENDPOINT_BASE + "get_token.cgi"; |
|
||||||
public static final String ENDPOINT_GET_USER = ENDPOINT_BASE + "get_user.cgi"; |
|
||||||
|
|
||||||
public static final String HTTP_USER_AGENT = "Sicilia Login like Mozilla/5.0"; |
|
||||||
} |
|
@ -1,113 +0,0 @@ |
|||||||
package it.mwg.sicilia.login; |
|
||||||
|
|
||||||
import it.mwg.sicilia.constants.ApiConstants; |
|
||||||
|
|
||||||
import java.util.Date; |
|
||||||
import java.util.Locale; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.http.HttpServletResponse; |
|
||||||
import javax.servlet.http.HttpSession; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.exception.PortalException; |
|
||||||
import com.liferay.portal.kernel.exception.SystemException; |
|
||||||
import com.liferay.portal.kernel.log.Log; |
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.security.SecureRandom; |
|
||||||
import com.liferay.portal.kernel.util.StringPool; |
|
||||||
import com.liferay.portal.kernel.util.Validator; |
|
||||||
import com.liferay.portal.model.User; |
|
||||||
import com.liferay.portal.security.auth.AutoLogin; |
|
||||||
import com.liferay.portal.security.auth.AutoLoginException; |
|
||||||
import com.liferay.portal.service.ServiceContext; |
|
||||||
import com.liferay.portal.service.UserLocalServiceUtil; |
|
||||||
import com.liferay.portal.util.PortalUtil; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Manifattura Web Group per Regione Siciliana |
|
||||||
* |
|
||||||
*/ |
|
||||||
public class SiciliaAutoLogin implements AutoLogin { |
|
||||||
private static final Log _log = LogFactoryUtil.getLog(SiciliaAutoLogin.class); |
|
||||||
|
|
||||||
@Override |
|
||||||
public String[] login(HttpServletRequest request, HttpServletResponse response) throws AutoLoginException { |
|
||||||
User user = null; |
|
||||||
HttpSession session = request.getSession(); |
|
||||||
Map<String, String> userData = (Map<String, String>) session |
|
||||||
.getAttribute(ApiConstants.SESSION_USER_DATA); |
|
||||||
if (Validator.isNotNull(userData)) { |
|
||||||
long companyId = PortalUtil.getCompanyId(request); |
|
||||||
user = logUser(companyId, userData.get(ApiConstants.PARAMETER_CODICE_FISCALE), |
|
||||||
userData.get(ApiConstants.PARAMETER_FIRST_NAME), |
|
||||||
userData.get(ApiConstants.PARAMETER_LAST_NAME)); |
|
||||||
if (Validator.isNotNull(user)) { |
|
||||||
return new String[] { String.valueOf(user.getUserId()), user.getPassword(), |
|
||||||
String.valueOf(user.isPasswordEncrypted()) }; |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public String[] handleException(HttpServletRequest request, HttpServletResponse response, Exception e) |
|
||||||
throws AutoLoginException { |
|
||||||
_log.error(e); |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
private User logUser(long companyId, String screenName, String firstName, String lastName) { |
|
||||||
_log.info("Cerco l'utente " + screenName + " (" + firstName + " " + lastName + ")"); |
|
||||||
User user = null; |
|
||||||
try { |
|
||||||
user = UserLocalServiceUtil.fetchUserByScreenName(companyId, screenName); |
|
||||||
|
|
||||||
if (Validator.isNull(user)) { |
|
||||||
long creatorUserId = UserLocalServiceUtil.getDefaultUserId(companyId); |
|
||||||
boolean autoPassword = true; |
|
||||||
String password = randomPassword(24); |
|
||||||
boolean autoScreenName = false; |
|
||||||
String emailAddress = screenName + "@no-email.regione.sicilia.it"; |
|
||||||
long facebookId = 0; |
|
||||||
String openId = StringPool.BLANK; |
|
||||||
Locale locale = Locale.ITALY; |
|
||||||
String middleName = StringPool.BLANK; |
|
||||||
int prefixId = 0; |
|
||||||
int suffixId = 0; |
|
||||||
boolean male = true; |
|
||||||
int birthdayMonth = 0; |
|
||||||
int birthdayDay = 1; |
|
||||||
int birthdayYear = 1970; |
|
||||||
String jobTitle = StringPool.BLANK; |
|
||||||
long[] groupIds = null; |
|
||||||
long[] organizationIds = null; |
|
||||||
long[] roleIds = null; |
|
||||||
long[] userGroupIds = null; |
|
||||||
boolean sendEmail = false; |
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
user = UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password, |
|
||||||
password, autoScreenName, screenName, emailAddress, facebookId, openId, locale, |
|
||||||
firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, |
|
||||||
birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, roleIds, |
|
||||||
userGroupIds, sendEmail, serviceContext); |
|
||||||
user.setPasswordModified(true); |
|
||||||
user.setPasswordModifiedDate(new Date()); |
|
||||||
user.setPasswordReset(false); |
|
||||||
UserLocalServiceUtil.updateUser(user); |
|
||||||
} |
|
||||||
} catch (SystemException | PortalException e) { |
|
||||||
_log.error("Errore durante l'autenticazione/creazione dell'utente " + screenName, e); |
|
||||||
} |
|
||||||
return user; |
|
||||||
} |
|
||||||
|
|
||||||
private String randomPassword(int length) { |
|
||||||
SecureRandom rnd = new SecureRandom(); |
|
||||||
StringBuilder sb = new StringBuilder(); |
|
||||||
for (int i = 0; i < length; i++) { |
|
||||||
sb.append((char) (32 + rnd.nextInt(95))); |
|
||||||
} |
|
||||||
return sb.toString(); |
|
||||||
} |
|
||||||
} |
|
@ -1,76 +0,0 @@ |
|||||||
package it.mwg.sicilia.login; |
|
||||||
|
|
||||||
import it.mwg.sicilia.constants.ApiConstants; |
|
||||||
import it.mwg.sicilia.util.ApiUtil; |
|
||||||
|
|
||||||
import java.io.IOException; |
|
||||||
import java.util.Locale; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import javax.servlet.Filter; |
|
||||||
import javax.servlet.FilterChain; |
|
||||||
import javax.servlet.FilterConfig; |
|
||||||
import javax.servlet.ServletException; |
|
||||||
import javax.servlet.ServletRequest; |
|
||||||
import javax.servlet.ServletResponse; |
|
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.http.HttpServletResponse; |
|
||||||
import javax.servlet.http.HttpSession; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.exception.PortalException; |
|
||||||
import com.liferay.portal.kernel.exception.SystemException; |
|
||||||
import com.liferay.portal.kernel.log.Log; |
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.util.StringPool; |
|
||||||
import com.liferay.portal.kernel.util.Validator; |
|
||||||
import com.liferay.portal.kernel.util.WebKeys; |
|
||||||
import com.liferay.portal.model.User; |
|
||||||
import com.liferay.portal.service.ServiceContext; |
|
||||||
import com.liferay.portal.service.UserLocalServiceUtil; |
|
||||||
import com.liferay.portal.util.PortalUtil; |
|
||||||
|
|
||||||
public class SiciliaLoginFilter implements Filter { |
|
||||||
public static final Log _log = LogFactoryUtil.getLog(SiciliaLoginFilter.class); |
|
||||||
|
|
||||||
@Override |
|
||||||
public void destroy() { |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) |
|
||||||
throws IOException, ServletException { |
|
||||||
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; |
|
||||||
String url = httpServletRequest.getRequestURL().toString(); |
|
||||||
String qs = httpServletRequest.getQueryString(); |
|
||||||
if (Validator.isNotNull(qs)) { |
|
||||||
url += "?" + qs; |
|
||||||
} |
|
||||||
_log.info("Filtro: " + url); |
|
||||||
HttpSession session = httpServletRequest.getSession(); |
|
||||||
String token = (String) session.getAttribute(ApiConstants.SESSION_TOKEN); |
|
||||||
if (Validator.isNull(token)) { |
|
||||||
token = ApiUtil.getToken(url); |
|
||||||
_log.info("Ho creato il token " + token + ". Eseguo redirect"); |
|
||||||
session.setAttribute(ApiConstants.SESSION_TOKEN, token); |
|
||||||
((HttpServletResponse) servletResponse).sendRedirect(ApiConstants.LOGIN_SERVER + "?t=" + token); |
|
||||||
return; |
|
||||||
} else { |
|
||||||
Map<String, String> userData = ApiUtil.getUserInfo(token); |
|
||||||
if (Validator.isNull(userData)) { |
|
||||||
_log.info("Il token potrebbe essere scaduto. Lo ricreo ed eseguo redirect."); |
|
||||||
token = ApiUtil.getToken(url); |
|
||||||
session.setAttribute(ApiConstants.SESSION_TOKEN, token); |
|
||||||
((HttpServletResponse) servletResponse).sendRedirect(ApiConstants.LOGIN_SERVER + "?t=" |
|
||||||
+ token); |
|
||||||
return; |
|
||||||
} else { |
|
||||||
session.setAttribute(ApiConstants.SESSION_USER_DATA, userData); |
|
||||||
} |
|
||||||
} |
|
||||||
chain.doFilter(servletRequest, servletResponse); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void init(FilterConfig config) throws ServletException { |
|
||||||
} |
|
||||||
} |
|
@ -1,126 +0,0 @@ |
|||||||
package it.mwg.sicilia.util; |
|
||||||
|
|
||||||
import java.io.BufferedReader; |
|
||||||
import java.io.IOException; |
|
||||||
import java.io.InputStreamReader; |
|
||||||
import java.io.OutputStream; |
|
||||||
import java.net.HttpURLConnection; |
|
||||||
import java.net.URL; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.Map; |
|
||||||
import it.mwg.sicilia.constants.ApiConstants; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.json.JSONException; |
|
||||||
import com.liferay.portal.kernel.json.JSONFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.json.JSONObject; |
|
||||||
import com.liferay.portal.kernel.log.Log; |
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.util.Validator; |
|
||||||
|
|
||||||
public class ApiUtil { |
|
||||||
private static final Log _log = LogFactoryUtil.getLog(ApiUtil.class); |
|
||||||
private static String auth = null; |
|
||||||
|
|
||||||
public static String getToken(String callbackURL) { |
|
||||||
if (Validator.isNull(auth)) { |
|
||||||
login(); |
|
||||||
} |
|
||||||
for (int i = 0; i < 10; i++) { |
|
||||||
if (Validator.isNotNull(auth)) { |
|
||||||
JSONObject map = JSONFactoryUtil.createJSONObject(); |
|
||||||
map.put(ApiConstants.PARAMETER_AUTH, auth).put(ApiConstants.PARAMETER_CALLBACK_URL, |
|
||||||
callbackURL); |
|
||||||
map = post(ApiConstants.ENDPOINT_GET_TOKEN, map); |
|
||||||
if (Validator.isNotNull(map)) { |
|
||||||
switch (map.getInt(ApiConstants.LABEL_ERROR_CODE)) { |
|
||||||
case ApiConstants.ERROR_OK: |
|
||||||
return map.getString(ApiConstants.PARAMETER_TOKEN); |
|
||||||
case ApiConstants.ERROR_INVALID_AUTH: |
|
||||||
_log.info("Auth scaduto. Eseguo nuovo login"); |
|
||||||
login(); |
|
||||||
break; |
|
||||||
default: |
|
||||||
_log.error("Errore durante la creazione del token: " + map.toString()); |
|
||||||
return null; |
|
||||||
} |
|
||||||
} else { |
|
||||||
_log.error("Errore inatteso durante la creazione del token"); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
public static Map<String, String> getUserInfo(String token) { |
|
||||||
_log.info("Recupero informazioni sull'utente con il token " + token + ", auth " + auth); |
|
||||||
JSONObject map = JSONFactoryUtil.createJSONObject(); |
|
||||||
map.put(ApiConstants.PARAMETER_AUTH, auth).put(ApiConstants.PARAMETER_TOKEN, token); |
|
||||||
map = post(ApiConstants.ENDPOINT_GET_USER, map); |
|
||||||
if (Validator.isNotNull(map)) { |
|
||||||
switch (map.getInt(ApiConstants.LABEL_ERROR_CODE)) { |
|
||||||
case ApiConstants.ERROR_OK: |
|
||||||
_log.info("Ho i dati dell'utente"); |
|
||||||
Map<String, String> ret = new HashMap<String, String>(); |
|
||||||
ret.put(ApiConstants.PARAMETER_FIRST_NAME, map.getString(ApiConstants.PARAMETER_FIRST_NAME)); |
|
||||||
ret.put(ApiConstants.PARAMETER_LAST_NAME, map.getString(ApiConstants.PARAMETER_LAST_NAME)); |
|
||||||
ret.put(ApiConstants.PARAMETER_CODICE_FISCALE, |
|
||||||
map.getString(ApiConstants.PARAMETER_CODICE_FISCALE)); |
|
||||||
return ret; |
|
||||||
default: |
|
||||||
_log.error("Errore durante il recupero dei dati utente: " + map.toString()); |
|
||||||
} |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
private static void login() { |
|
||||||
JSONObject map = JSONFactoryUtil.createJSONObject(); |
|
||||||
map.put(ApiConstants.PARAMETER_USERNAME, ApiConstants.API_USERNAME).put( |
|
||||||
ApiConstants.PARAMETER_PASSWORD, ApiConstants.API_PASSWORD); |
|
||||||
map = post(ApiConstants.ENDPOINT_LOGIN, map); |
|
||||||
if (Validator.isNotNull(map)) { |
|
||||||
if (ApiConstants.ERROR_OK == map.getInt(ApiConstants.LABEL_ERROR_CODE)) { |
|
||||||
auth = map.getString(ApiConstants.PARAMETER_AUTH); |
|
||||||
} else { |
|
||||||
_log.error("Errore durante il login: " + map.toString()); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private static JSONObject post(String endPoint, JSONObject json) { |
|
||||||
try { |
|
||||||
URL url = new URL(endPoint); |
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
|
||||||
connection.setRequestMethod("POST"); |
|
||||||
connection.setRequestProperty("User-Agent", ApiConstants.HTTP_USER_AGENT); |
|
||||||
connection.setDoOutput(true); |
|
||||||
OutputStream stream = connection.getOutputStream(); |
|
||||||
_log.info("Invio: " + json.toString() + " (" + endPoint + ")"); |
|
||||||
stream.write(json.toString().getBytes()); |
|
||||||
stream.flush(); |
|
||||||
stream.close(); |
|
||||||
int code = connection.getResponseCode(); |
|
||||||
if (code == HttpURLConnection.HTTP_OK) { |
|
||||||
String response = readResponse(connection); |
|
||||||
_log.info("Ricevo: " + response); |
|
||||||
JSONObject ret = JSONFactoryUtil.createJSONObject(response); |
|
||||||
return ret; |
|
||||||
} |
|
||||||
} catch (IOException | JSONException e) { |
|
||||||
_log.error(e); |
|
||||||
} |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
private static String readResponse(HttpURLConnection connection) throws IOException { |
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); |
|
||||||
StringBuilder builder = new StringBuilder(); |
|
||||||
String inputLine; |
|
||||||
while ((inputLine = reader.readLine()) != null) { |
|
||||||
builder.append(inputLine); |
|
||||||
} |
|
||||||
reader.close(); |
|
||||||
|
|
||||||
return builder.toString(); |
|
||||||
} |
|
||||||
} |
|
@ -1,2 +0,0 @@ |
|||||||
#auth.pipeline.enable.liferay.check=false |
|
||||||
auto.login.hooks=it.mwg.sicilia.login.SiciliaAutoLogin |
|
@ -1,5 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<web-app id="WebApp_ID" version="2.5" |
|
||||||
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> |
|
||||||
</web-app> |
|
@ -1,18 +0,0 @@ |
|||||||
<?xml version="1.0"?> |
|
||||||
|
|
||||||
<ivy-module |
|
||||||
version="2.0" |
|
||||||
xmlns:m2="http://ant.apache.org/ivy/maven" |
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||||
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" |
|
||||||
> |
|
||||||
<info module="sicilia-login-hook" organisation="com.liferay"> |
|
||||||
<extends extendType="configurations,description,info" location="../../ivy.xml" module="com.liferay.sdk" organisation="com.liferay" revision="latest.integration" /> |
|
||||||
</info> |
|
||||||
|
|
||||||
<dependencies defaultconf="default"> |
|
||||||
<dependency conf="test->default" name="arquillian-junit-container" org="org.jboss.arquillian.junit" rev="1.1.6.Final" /> |
|
||||||
<dependency conf="test->default" name="arquillian-tomcat-remote-7" org="org.jboss.arquillian.container" rev="1.0.0.CR6" /> |
|
||||||
<dependency conf="test->default" name="com.liferay.ant.arquillian" org="com.liferay" rev="1.0.0-SNAPSHOT" /> |
|
||||||
</dependencies> |
|
||||||
</ivy-module> |
|
@ -1 +0,0 @@ |
|||||||
f1563bf5bac3cf93500d1510b72dd9da |
|
@ -1,15 +0,0 @@ |
|||||||
<?xml version="1.0"?> |
|
||||||
|
|
||||||
<arquillian |
|
||||||
xmlns="http://jboss.org/schema/arquillian" |
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||||
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd" |
|
||||||
> |
|
||||||
<container default="true" qualifier="tomcat"> |
|
||||||
<configuration> |
|
||||||
<property name="jmxPort">8099</property> |
|
||||||
<property name="pass">tomcat</property> |
|
||||||
<property name="user">tomcat</property> |
|
||||||
</configuration> |
|
||||||
</container> |
|
||||||
</arquillian> |
|
Caricamento…
Reference in new issue