diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-05-06 12:33:04 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-05-06 12:33:04 +0200 | 
| commit | a727c54ba5f7eb56e55a337de15a34c606fec00e (patch) | |
| tree | 9e71dbe1930498ff2e6ef292c58f5adbb307ba85 /id/ConfigWebTool/src/main/java/at | |
| parent | 66fdd9718584335322e3b1aea3e34c1dee330502 (diff) | |
| download | moa-id-spss-a727c54ba5f7eb56e55a337de15a34c606fec00e.tar.gz moa-id-spss-a727c54ba5f7eb56e55a337de15a34c606fec00e.tar.bz2 moa-id-spss-a727c54ba5f7eb56e55a337de15a34c606fec00e.zip | |
add first parts of interfederation configuration
Diffstat (limited to 'id/ConfigWebTool/src/main/java/at')
7 files changed, 835 insertions, 18 deletions
| diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java index 69bf5dc0c..c4a825589 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/OAListElement.java @@ -24,11 +24,21 @@ package at.gv.egovernment.moa.id.configuration.data;  public class OAListElement { +	public enum ServiceType {OA, VIDP, IDP}  +	  	private long dataBaseID;  	private String oaIdentifier;  	private String oaFriendlyName;  	private String oaType;  	private boolean isActive; +	private ServiceType serviceType; +	 +	/** +	 *  +	 */ +	public OAListElement(ServiceType type) { +		this.serviceType = type; +	}  	/** @@ -95,5 +105,10 @@ public class OAListElement {  	public String getIsActive(){  		return String.valueOf(isActive);  	} -	 +	/** +	 * @return the serviceType +	 */ +	public String getServiceType() { +		return serviceType.name(); +	}	  } diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java new file mode 100644 index 000000000..41271858f --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAMOAIDPInterfederationConfig.java @@ -0,0 +1,195 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egovernment.moa.id.configuration.data.oa; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.log4j.Logger; + +import at.gv.egovernment.moa.id.commons.db.dao.config.InterfederationIDPType; +import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication; +import at.gv.egovernment.moa.id.commons.validation.ValidationHelper; +import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser; +import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.util.MiscUtil; + +/** + * @author tlenz + * + */ +public class OAMOAIDPInterfederationConfig implements IOnlineApplicationData { + +	private static final Logger log = Logger.getLogger(OAMOAIDPInterfederationConfig.class); +	 +	private String queryURL; +	private boolean inboundSSO = true; +	private boolean outboundSSO = true; +	private boolean storeSSOSession = true; +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "MOAIDPInterfederation"; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOA, +			AuthenticatedUser authUser, HttpServletRequest request) { +		 +		InterfederationIDPType moaIDP = dbOA.getInterfederationIDP(); +		if (moaIDP != null) { +			this.queryURL = moaIDP.getAttributeQueryURL(); +			this.inboundSSO = moaIDP.isInboundSSO(); +			this.outboundSSO = moaIDP.isOutboundSSO(); +			this.storeSSOSession = moaIDP.isStoreSSOSession(); +		} +		 +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#store(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public String store(OnlineApplication dbOA, AuthenticatedUser authUser, +			HttpServletRequest request) { + +		if (authUser.isAdmin()) { +			 +			InterfederationIDPType moaIDP = dbOA.getInterfederationIDP(); +			if (moaIDP == null) { +				moaIDP = new InterfederationIDPType(); +				dbOA.setInterfederationIDP(moaIDP); +			} +			 +			moaIDP.setAttributeQueryURL(queryURL); +			moaIDP.setInboundSSO(inboundSSO); +			moaIDP.setOutboundSSO(outboundSSO); +			moaIDP.setStoreSSOSession(storeSSOSession); +		} +		 +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#validate(at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> validate(OAGeneralConfig general, +			AuthenticatedUser authUser, HttpServletRequest request) { +		 +		List<String> errors  = new ArrayList<String>(); +		 +		if (MiscUtil.isNotEmpty(queryURL)) { +			if (!ValidationHelper.validateURL(queryURL)) { +				log.info("AttributeQuery URL is not valid"); +				errors.add(LanguageHelper.getErrorString("validation.interfederation.moaidp.queryurl.valid", request)); +				 +			} +			 +			boolean publicServiceAllowed = ValidationHelper.isPublicServiceAllowed(queryURL); +			if (!publicServiceAllowed && !general.isBusinessService()) { +				log.info("AttributQuery Service URL " + queryURL + " does not allow PublicService."); +				errors.add(LanguageHelper.getErrorString("validation.interfederation.moaidp.queryurl.publicservice",  +						new Object[] {queryURL}, request )); +				general.setBusinessService(true); +				 +			} +			 +		} +		 +		if (inboundSSO && MiscUtil.isEmpty(queryURL)) { +			log.info("Inbound Single Sign-On requires AttributQueryURL configuration."); +			errors.add(LanguageHelper.getErrorString("validation.interfederation.moaidp.queryurl.empty", request)); +		} +		 +		return errors; +	} + +	/** +	 * @return the queryURL +	 */ +	protected String getQueryURL() { +		return queryURL; +	} + +	/** +	 * @param queryURL the queryURL to set +	 */ +	protected void setQueryURL(String queryURL) { +		this.queryURL = queryURL; +	} + +	/** +	 * @return the inboundSSO +	 */ +	protected boolean isInboundSSO() { +		return inboundSSO; +	} + +	/** +	 * @param inboundSSO the inboundSSO to set +	 */ +	protected void setInboundSSO(boolean inboundSSO) { +		this.inboundSSO = inboundSSO; +	} + +	/** +	 * @return the outboundSSO +	 */ +	protected boolean isOutboundSSO() { +		return outboundSSO; +	} + +	/** +	 * @param outboundSSO the outboundSSO to set +	 */ +	protected void setOutboundSSO(boolean outboundSSO) { +		this.outboundSSO = outboundSSO; +	} + +	/** +	 * @return the storeSSOSession +	 */ +	protected boolean isStoreSSOSession() { +		return storeSSOSession; +	} + +	/** +	 * @param storeSSOSession the storeSSOSession to set +	 */ +	protected void setStoreSSOSession(boolean storeSSOSession) { +		this.storeSSOSession = storeSSOSession; +	} +	 +	 + +} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java new file mode 100644 index 000000000..4036bc25f --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OATargetConfiguration.java @@ -0,0 +1,368 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egovernment.moa.id.configuration.data.oa; + +import java.util.Arrays; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA; +import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber; +import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication; +import at.gv.egovernment.moa.id.commons.validation.TargetValidator; +import at.gv.egovernment.moa.id.configuration.Constants; +import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser; +import at.gv.egovernment.moa.id.configuration.validation.oa.OATargetConfigValidation; +import at.gv.egovernment.moa.util.MiscUtil; + +/** + * @author tlenz + * + */ +public class OATargetConfiguration implements IOnlineApplicationData { + +	private boolean deaktivededBusinessService = false; +	 +    private boolean subTargetSet = false; +	 +    private String target = null; +	private String target_subsector = null; +	private String target_admin = null; +	private static List<String> targetList = null; +	private String targetFriendlyName = null; +	private boolean isAdminTarget = false; + +	private String identificationNumber = null; +	private String identificationType = null; +	private static List<String> identificationTypeList = null; +	 +	public OATargetConfiguration() { +		 targetList = TargetValidator.getListOfTargets(); +		 target = ""; + +		 identificationTypeList = Arrays.asList( +				 Constants.IDENIFICATIONTYPE_FN, +				 Constants.IDENIFICATIONTYPE_ZVR, +				 Constants.IDENIFICATIONTYPE_ERSB, +                Constants.IDENIFICATIONTYPE_STORK); +	} +	 +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#getName() +	 */ +	@Override +	public String getName() { +		return "OATargetConfig"; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#parse(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> parse(OnlineApplication dbOA, +			AuthenticatedUser authUser, HttpServletRequest request) { +        subTargetSet = MiscUtil.isNotEmpty(getTarget_subsector()); +		 +		String target_full = dbOA.getTarget(); +		if (MiscUtil.isNotEmpty(target_full)) { +			if (TargetValidator.isValidTarget(target_full)) { +				target = target_full; +								 +			} else { +				String[] target_split = target_full.split("-"); +				 +				if (TargetValidator.isValidTarget(target_split[0])) { +					target = target_split[0]; +					if (target_split.length > 1) +						target_subsector = target_split[1]; +					 +				} else { +					target = ""; +					target_subsector = null; +					target_admin = target_full; +					isAdminTarget = true; +				} +			} +			targetFriendlyName = dbOA.getTargetFriendlyName(); +		} +		 +        AuthComponentOA oaauth = dbOA.getAuthComponentOA(); +		if (oaauth != null) { +			 +			IdentificationNumber idnumber = oaauth.getIdentificationNumber(); +			if (idnumber != null) { +				String number = idnumber.getValue(); +				if (MiscUtil.isNotEmpty(number)) { +					String[] split = number.split("\\+"); +				 +					if (Constants.PREFIX_WPBK.startsWith(split[0]) && split.length >= 2) { +						identificationType = split[1]; +						identificationNumber = split[2]; +					} else if (Constants.PREFIX_STORK.startsWith(split[0]) && split.length >= 2) { +                        //identificationType = split[1]; // setting at as iden category ? +                        identificationType = Constants.IDENIFICATIONTYPE_STORK; +                        identificationNumber = split[2]; // setting sp country as ident type -> sp ident +                    } +				} +				 +				if (authUser.isOnlyBusinessService()) { +			        deaktivededBusinessService = authUser.isOnlyBusinessService(); +					 +			        identificationType = authUser.getBusinessServiceType(); +			        identificationNumber = authUser.getBusinessServiceNumber(); +			         +				} +				 +			}						  +		} +		 +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#store(at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public String store(OnlineApplication dbOA, AuthenticatedUser authUser, +			HttpServletRequest request) { +		 +        AuthComponentOA authoa = dbOA.getAuthComponentOA(); +        if (authoa == null) { +            authoa = new AuthComponentOA(); +            dbOA.setAuthComponentOA(authoa); +        } +		 +        if (isBusinessService(dbOA) || authUser.isOnlyBusinessService()) { + +            dbOA.setType(Constants.MOA_CONFIG_BUSINESSSERVICE); + +            String num = null; +			if (authUser.isOnlyBusinessService()) { +		        deaktivededBusinessService = authUser.isOnlyBusinessService(); +				num = authUser.getBusinessServiceType() + authUser.getBusinessServiceNumber(); +		         +			} else { +             +	            num = getIdentificationNumber().replaceAll(" ", ""); +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_FN)) { +	                num = num.substring(Constants.IDENIFICATIONTYPE_FN.length()); +	 +	                num = at.gv.egovernment.moa.util.StringUtils.deleteLeadingZeros(num); +	 +	                // num = StringUtils.leftPad(num, 7, '0'); +	            } +	 +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_ZVR)) +	                num = num.substring(Constants.IDENIFICATIONTYPE_ZVR.length()); +	 +	            if (num.startsWith(Constants.IDENIFICATIONTYPE_ERSB)) +	                num = num.substring(Constants.IDENIFICATIONTYPE_ERSB.length()); +			} +			 +            IdentificationNumber idnumber = new IdentificationNumber(); + +            if (getIdentificationType().equals(Constants.IDENIFICATIONTYPE_STORK)) { +                idnumber.setValue(Constants.PREFIX_STORK + "AT" + "+" + num); +                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(getIdentificationType())); +            } else { +                idnumber.setValue(Constants.PREFIX_WPBK + getIdentificationType() + "+" + num); +                idnumber.setType(Constants.BUSINESSSERVICENAMES.get(getIdentificationType())); +            } +             +            authoa.setIdentificationNumber(idnumber); + +        } else { +            dbOA.setType(null); + +            if (authUser.isAdmin()) { +                if (MiscUtil.isNotEmpty(getTarget_admin()) && isAdminTarget()) { +                    dbOA.setTarget(getTarget_admin()); +                    dbOA.setTargetFriendlyName(getTargetFriendlyName()); + +                } else { + +                    String target = getTarget(); + +                    if (MiscUtil.isNotEmpty(getTarget_subsector()) && subTargetSet) +                        dbOA.setTarget(target + "-" + getTarget_subsector()); +                    else +                        dbOA.setTarget(target); + +                    String targetname = TargetValidator.getTargetFriendlyName(target); +                    if (MiscUtil.isNotEmpty(targetname)) dbOA.setTargetFriendlyName(targetname); + +                } + +            } else { + +                if (MiscUtil.isNotEmpty(getTarget())) { + +                    String target = getTarget(); + +                    if (MiscUtil.isNotEmpty(getTarget_subsector()) && subTargetSet) +                        dbOA.setTarget(target + "-" + getTarget_subsector()); + +                    else +                        dbOA.setTarget(target); + +                    String targetname = TargetValidator.getTargetFriendlyName(target); +                    if (MiscUtil.isNotEmpty(targetname)) dbOA.setTargetFriendlyName(targetname); + +                } +            } +        } +		return null; +	} + +	/** +	 * @return +	 */ +	private boolean isBusinessService(OnlineApplication dbOA) { +		if (dbOA.getType().equals(Constants.MOA_CONFIG_BUSINESSSERVICE)) +			return true; +		else  +			return false;		 +	} + + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData#validate(at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig, at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser, javax.servlet.http.HttpServletRequest) +	 */ +	@Override +	public List<String> validate(OAGeneralConfig general, +			AuthenticatedUser authUser, HttpServletRequest request) { +		return new OATargetConfigValidation().validate(this, authUser.isAdmin(), general, request); +	} + +	public String getTarget() { +		return target; +	} + +	public void setTarget(String target) { +		this.target = target; +	} + +	public String getTargetFriendlyName() { +		return targetFriendlyName; +	} + +	public void setTargetFriendlyName(String targetFriendlyName) { +		this.targetFriendlyName = targetFriendlyName; +	} + +	public String getIdentificationNumber() { +		return identificationNumber; +	} + +	public void setIdentificationNumber(String identificationNumber) { +		this.identificationNumber = identificationNumber; +	} + +	public String getIdentificationType() { +		return identificationType; +	} + +	public void setIdentificationType(String identificationType) { +		this.identificationType = identificationType; +	} +	 +	/** +	 * @return the target_subsector +	 */ +	public String getTarget_subsector() { +		return target_subsector; +	} + + +	/** +	 * @param target_subsector the target_subsector to set +	 */ +	public void setTarget_subsector(String target_subsector) { +		this.target_subsector = target_subsector; +	} + + +	/** +	 * @return the target_admin +	 */ +	public String getTarget_admin() { +		return target_admin; +	} + + +	/** +	 * @param target_admin the target_admin to set +	 */ +	public void setTarget_admin(String target_admin) { +		this.target_admin = target_admin; +	} + + +	/** +	 * @return the targetList +	 */ +	public List<String> getTargetList() { +		return targetList; +	} + + +	/** +	 * @return the identificationTypeList +	 */ +	public List<String> getIdentificationTypeList() { +		return identificationTypeList; +	} + + +	/** +	 * @return the isAdminTarget +	 */ +	public boolean isAdminTarget() { +		return isAdminTarget; +	} + + +	/** +	 * @param isAdminTarget the isAdminTarget to set +	 */ +	public void setAdminTarget(boolean isAdminTarget) { +		this.isAdminTarget = isAdminTarget; +	} +	 +    /** +     * @return the deaktivededBusinessService +     */ +    public boolean isDeaktivededBusinessService() { +        return deaktivededBusinessService; +    } + + +    /** +     * @param deaktivededBusinessService the deaktivededBusinessService to set +     */ +    public void setDeaktivededBusinessService(boolean deaktivededBusinessService) { +        this.deaktivededBusinessService = deaktivededBusinessService; +    } +} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java index 8e58f7bde..24ee653f3 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/helper/FormDataHelper.java @@ -29,26 +29,53 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;  import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;  import at.gv.egovernment.moa.id.configuration.auth.AuthenticatedUser;  import at.gv.egovernment.moa.id.configuration.data.OAListElement; +import at.gv.egovernment.moa.id.configuration.data.OAListElement.ServiceType;  public class FormDataHelper { -	public static ArrayList<OAListElement> addFormOAs(List<OnlineApplication> dbOAs) { +	public static ArrayList<OAListElement> populateFormWithInderfederationIDPs(List<OnlineApplication> dbOAs) {  		ArrayList<OAListElement> formOAs = new ArrayList<OAListElement>();  		for (OnlineApplication dboa : dbOAs) { -			OAListElement listoa = new OAListElement(); -			listoa.setActive(dboa.isIsActive()); -			listoa.setDataBaseID(dboa.getHjid()); -			listoa.setOaFriendlyName(dboa.getFriendlyName()); -			listoa.setOaIdentifier(dboa.getPublicURLPrefix()); -			listoa.setOaType(dboa.getType()); -			formOAs.add(listoa); -		} +			 +			if (dboa.isIsInterfederationIDP()!= null && dboa.isIsInterfederationIDP()) +				formOAs.add(addOAFormListElement(dboa, ServiceType.IDP)); +			 +			else if (dboa.getAuthComponentOA().getOASTORK() != null  +						&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled() != null +						&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled()) +				formOAs.add(addOAFormListElement(dboa, ServiceType.VIDP)); +		}		 +		return formOAs; +	} +	 +	public static ArrayList<OAListElement> populateFormWithOAs(List<OnlineApplication> dbOAs) { +		ArrayList<OAListElement> formOAs = new ArrayList<OAListElement>(); + +		for (OnlineApplication dboa : dbOAs) { +			 +			if ( !((dboa.isIsInterfederationIDP() != null && dboa.isIsInterfederationIDP()) ||  +					(dboa.getAuthComponentOA().getOASTORK() != null  +						&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled() != null +						&& dboa.getAuthComponentOA().getOASTORK().isVidpEnabled()))) { +				formOAs.add(addOAFormListElement(dboa, ServiceType.OA)); +			} +		}		  		return formOAs;  	} +	private static OAListElement addOAFormListElement(OnlineApplication dboa, ServiceType type) { +		OAListElement listoa = new OAListElement(type); +		listoa.setActive(dboa.isIsActive()); +		listoa.setDataBaseID(dboa.getHjid()); +		listoa.setOaFriendlyName(dboa.getFriendlyName()); +		listoa.setOaIdentifier(dboa.getPublicURLPrefix()); +		listoa.setOaType(dboa.getType()); +		return listoa; +	} +	  	public static ArrayList<AuthenticatedUser> addFormUsers(List<UserDatabase> dbuserlist) {  		ArrayList<AuthenticatedUser> userlist = new ArrayList<AuthenticatedUser>(); diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java new file mode 100644 index 000000000..769b92649 --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/InterfederationIDPAction.java @@ -0,0 +1,215 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egovernment.moa.id.configuration.struts.action; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead; +import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils; +import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication; +import at.gv.egovernment.moa.id.configuration.Constants; +import at.gv.egovernment.moa.id.configuration.data.FormularCustomization; +import at.gv.egovernment.moa.id.configuration.data.OAListElement; +import at.gv.egovernment.moa.id.configuration.data.oa.IOnlineApplicationData; +import at.gv.egovernment.moa.id.configuration.data.oa.OAAuthenticationData; +import at.gv.egovernment.moa.id.configuration.data.oa.OAMOAIDPInterfederationConfig; +import at.gv.egovernment.moa.id.configuration.data.oa.OAPVP2Config; +import at.gv.egovernment.moa.id.configuration.data.oa.OASTORKConfig; +import at.gv.egovernment.moa.id.configuration.exception.BasicActionException; +import at.gv.egovernment.moa.id.configuration.exception.BasicOAActionException; +import at.gv.egovernment.moa.id.configuration.helper.FormDataHelper; +import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.id.util.FormBuildUtils; +import at.gv.egovernment.moa.id.util.Random; + +/** + * @author tlenz + * + */ +public class InterfederationIDPAction extends BasicOAAction { +	private static final Logger log = Logger.getLogger(InterfederationIDPAction.class); +	private static final long serialVersionUID = 2879192135387083131L; + +	public static final String STRUTS_IDP_VIDP = "-VIDP"; +	public static final String STRUTS_IDP_MOA = "-MOAIDP"; +	 +	private List<OAListElement> formOAs;  +	 +	public InterfederationIDPAction() { +		super(); +		 +	} +	 +	public String listAllIDPs() { +		try { +			populateBasicInformations(); + +			if (authUser.isAdmin()) {				 +				List<OnlineApplication> dbOAs = ConfigurationDBRead.getAllOnlineApplications(); +				 +				if (dbOAs == null || dbOAs.size() == 0) { +					addActionError(LanguageHelper.getErrorString("errors.listOAs.noOA", request)); +					 +				} else { +					formOAs = FormDataHelper.populateFormWithInderfederationIDPs(dbOAs); +				} +				 +				session.setAttribute(Constants.SESSION_RETURNAREA,  +						Constants.STRUTS_RETURNAREA_VALUES.main.name()); +				 +				ConfigurationDBUtils.closeSession(); +				 +				return Constants.STRUTS_SUCCESS; +				 +			} else { +				log.warn("User with ID " + authUser.getUserID() + " not allowed to manage interfederation IDPs."); +				addActionError(LanguageHelper.getErrorString("errors.notallowed", request)); +				return Constants.STRUTS_NOTALLOWED; +			} +			 +		} catch (BasicActionException e) { +			return Constants.STRUTS_ERROR; +			 +		} +	} +	 +	public String loadIDPInformation() { +		try { +			populateBasicInformations(); +			 +			OnlineApplication oa = populateOnlineApplicationFromRequest(); +			 +			if (oa.isIsInterfederationIDP() != null  +					&& oa.isIsInterfederationIDP()) {				 +				 +				buildMOAIDPFormList();				 +				parseOAToForm(oa);				 +				 +				return Constants.STRUTS_SUCCESS + STRUTS_IDP_MOA; +				 +			} else if (oa.getAuthComponentOA().getOASTORK() != null  +					&& oa.getAuthComponentOA().getOASTORK().isVidpEnabled() != null +					&& oa.getAuthComponentOA().getOASTORK().isVidpEnabled()) { +				 +				buildVIDPFormList();				 +				parseOAToForm(oa);								 +				 +				return Constants.STRUTS_SUCCESS + STRUTS_IDP_VIDP; +				 +			} else { +				log.warn("Requested application is not an interfederation IDP."); +				return Constants.STRUTS_NOTALLOWED; +			} +				 +				 +			 +		} catch (BasicActionException e) { +			return Constants.STRUTS_ERROR; +			 +		} catch (BasicOAActionException e) { +			addActionError(e.getStrutsError()); +			return e.getStrutsReturnValue(); +			 +		}		 +	} + +	/** +	 * @param oa +	 */ +	private void parseOAToForm(OnlineApplication oa) { +        List<String> errors = new ArrayList<String>(); +		for (IOnlineApplicationData form : formList.values()) { +			List<String> error = form.parse(oa, authUser, request); +			if (error != null) +				errors.addAll(error); +		} +        if (errors.size() > 0) { +            for (String el : errors) +                addActionError(el); +        } + +        setNewOA(false); +         +        ConfigurationDBUtils.closeSession(); + +        formID = Random.nextRandom(); +        session.setAttribute(Constants.SESSION_FORMID, formID); +        session.setAttribute(Constants.SESSION_OAID, oaid);		 +	} + +	private void buildMOAIDPFormList() { +		 +    	OAPVP2Config pvp2OA = new OAPVP2Config(); +    	formList.put(pvp2OA.getName(), pvp2OA); +    	 +    	OAMOAIDPInterfederationConfig moaidp = new OAMOAIDPInterfederationConfig(); +    	formList.put(moaidp.getName(), moaidp); +		 +	} +		 +	/** +	 *  +	 */ +	private void buildVIDPFormList() { +		 +    	OAAuthenticationData authOA = new OAAuthenticationData(); +    	formList.put(authOA.getName(), authOA); +    	 +    	OASTORKConfig storkOA = new OASTORKConfig(); +    	formList.put(storkOA.getName(), storkOA); +    	 +        Map<String, String> map = new HashMap<String, String>(); +        map.putAll(FormBuildUtils.getDefaultMap()); +    	FormularCustomization formOA = new FormularCustomization(map); +    	formList.put(formOA.getName(), formOA); +		 +	} +	 +	/** +	 * @return the formOAs +	 */ +	public List<OAListElement> getFormOAs() { +		return formOAs; +	} +	 +    public OAPVP2Config getPvp2OA() { +        return (OAPVP2Config) formList.get(new OAPVP2Config().getName()); +    } + +    public void setPvp2OA(OAPVP2Config pvp2oa) { +    	formList.put(pvp2oa.getName(), pvp2oa); +    } +     +    public OAMOAIDPInterfederationConfig getMOAIDP() { +        return (OAMOAIDPInterfederationConfig) formList.get(new OAMOAIDPInterfederationConfig().getName()); +    } + +    public void setMOAIDP(OAMOAIDPInterfederationConfig pvp2oa) { +    	formList.put(pvp2oa.getName(), pvp2oa); +    } +} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java index fdef558a9..7f7f083c9 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/ListOAsAction.java @@ -88,7 +88,7 @@ public class ListOAsAction extends BasicAction {  			addActionError(LanguageHelper.getErrorString("errors.listOAs.noOA", request));  		} else { -			formOAs = FormDataHelper.addFormOAs(dbOAs); +			formOAs = FormDataHelper.populateFormWithOAs(dbOAs);  		}  		session.setAttribute(Constants.SESSION_RETURNAREA,  @@ -160,14 +160,11 @@ public class ListOAsAction extends BasicAction {  		}  		if (dbOAs == null || dbOAs.size() == 0) { -			log.debug("No OAs found with Identifier " + friendlyname); +			log.debug("No IDPs found with Identifier " + friendlyname);  			addActionError(LanguageHelper.getErrorString("errors.listOAs.noOA", request)); -		} else { -			 -			formOAs = FormDataHelper.addFormOAs(dbOAs); -			session.setAttribute(Constants.SESSION_RETURNAREA,  -					Constants.STRUTS_RETURNAREA_VALUES.main.name()); +		} else {			 +			formOAs = FormDataHelper.populateFormWithOAs(dbOAs);  		} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java index a4c768eda..283b3604a 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/OpenAdminRequestsAction.java @@ -67,7 +67,7 @@ public class OpenAdminRequestsAction extends BasicAction {  			List<OnlineApplication> dbOAs = ConfigurationDBRead.getAllNewOnlineApplications();  			if (dbOAs != null) { -				formOAs = FormDataHelper.addFormOAs(dbOAs); +				formOAs = FormDataHelper.populateFormWithOAs(dbOAs);  			}  			List<UserDatabase> dbUsers = ConfigurationDBRead.getAllNewUsers(); | 
