diff options
Diffstat (limited to 'id/ConfigWebTool/src')
12 files changed, 535 insertions, 26 deletions
| diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java index 7b02883bb..7a9d91a5d 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/Constants.java @@ -51,7 +51,9 @@ public class Constants {  	public static final String SESSION_PVP2REQUESTID = "pvp2requestid";  	public static final String SESSION_RETURNAREA = "returnarea";  	public static final String SESSION_BKUFORMPREVIEW = "bkuformpreview"; -	public static final String SESSION_OAUTH20SECRET = "oauth20secret"; +	public static final String SESSION_OAUTH20SECRET = "oauth20secret";	 +	public static final String SESSION_BKUSELECTIONTEMPLATE = "bkuSelectionTemplate"; +	public static final String SESSION_SENDASSERTIONTEMPLATE = "sendAssertionTemplate";  	public static enum STRUTS_RETURNAREA_VALUES {adminRequestsInit, main, usermanagementInit};  diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java index 49d556ba4..687925c18 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/FormularCustomization.java @@ -49,7 +49,10 @@ public class FormularCustomization {  	private String button_BackGroundColor = null;  	private String button_BackGroundColorFocus = null;  	private String button_FrontColor = null; - +	private String applet_height = null; +	private String applet_width = null; +	 +	  	private String appletRedirectTarget = null;  	public static List<String> appletRedirectTargetList = null; @@ -79,6 +82,14 @@ public class FormularCustomization {  						onlyMandateAllowed = formcustom.isOnlyMandateLoginAllowed();  					} +					if (formcustom.getAppletHeight() != null) { +						applet_height = formcustom.getAppletHeight(); +					} +					 +					if (formcustom.getAppletHeight() != null) { +						applet_width = formcustom.getAppletWidth(); +					} +					  					if (MiscUtil.isNotEmpty(formcustom.getAppletRedirectTarget()))  						appletRedirectTarget = formcustom.getAppletRedirectTarget(); @@ -351,6 +362,35 @@ public class FormularCustomization {  		this.fontTypeListValue = fontTypeListValue;  	} +	/** +	 * @return the applet_height +	 */ +	public String getApplet_height() { +		return applet_height; +	} + +	/** +	 * @param applet_height the applet_height to set +	 */ +	public void setApplet_height(String applet_height) { +		this.applet_height = applet_height; +	} + +	/** +	 * @return the applet_width +	 */ +	public String getApplet_width() { +		return applet_width; +	} + +	/** +	 * @param applet_width the applet_width to set +	 */ +	public void setApplet_width(String applet_width) { +		this.applet_width = applet_width; +	} + +	 diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java index 334124cfd..079e6807e 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAGeneralConfig.java @@ -22,6 +22,7 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.configuration.data.oa; +import java.io.File;  import java.util.ArrayList;  import java.util.Arrays;  import java.util.HashMap; @@ -87,6 +88,16 @@ public class OAGeneralConfig {  	private Map<String, byte[]> transformations; +	private List<File> bkuSelectionFileUpload = null; +	private List<String> bkuSelectionFileUploadContentType = null; +	private List<String> bkuSelectionFileUploadFileName = new ArrayList<String>(); +	 +	private List<File> sendAssertionFileUpload = null; +	private List<String> sendAssertionFileUploadContentType = null; +	private List<String> sendAssertionFileUploadFileName  = new ArrayList<String>();; +	 +	private boolean deleteBKUTemplate = false; +	private boolean deleteSendAssertionTemplate = false;  	public OAGeneralConfig() { @@ -225,6 +236,16 @@ public class OAGeneralConfig {  						SLTemplates.add(el.getURL());  					}  				} +				 +				TransformsInfoType bkuSelectTemplate = templates.getBKUSelectionTemplate(); +				if (bkuSelectTemplate != null && MiscUtil.isNotEmpty(bkuSelectTemplate.getFilename())) { +					bkuSelectionFileUploadFileName.add(bkuSelectTemplate.getFilename());					 +				} +				 +				TransformsInfoType sendAssertionTemplate = templates.getSendAssertionTemplate(); +				if (sendAssertionTemplate != null && MiscUtil.isNotEmpty(sendAssertionTemplate.getFilename())) { +					sendAssertionFileUploadFileName.add(sendAssertionTemplate.getFilename());					 +				}  			}  			if (SLTemplates != null && SLTemplates.size() > 0) @@ -602,7 +623,140 @@ public class OAGeneralConfig {  	 */  	public void setUseMandates(boolean useMandates) {  		this.useMandates = useMandates; +	} + + +	/** +	 * @return the bkuSelectionFileUpload +	 */ +	public List<File> getBkuSelectionFileUpload() { +		return bkuSelectionFileUpload; +	} + + +	/** +	 * @param bkuSelectionFileUpload the bkuSelectionFileUpload to set +	 */ +	public void setBkuSelectionFileUpload(List<File> bkuSelectionFileUpload) { +		this.bkuSelectionFileUpload = bkuSelectionFileUpload; +	} + + +	/** +	 * @return the bkuSelectionFileUploadContentType +	 */ +	public List<String> getBkuSelectionFileUploadContentType() { +		return bkuSelectionFileUploadContentType; +	} + + +	/** +	 * @param bkuSelectionFileUploadContentType the bkuSelectionFileUploadContentType to set +	 */ +	public void setBkuSelectionFileUploadContentType( +			List<String> bkuSelectionFileUploadContentType) { +		this.bkuSelectionFileUploadContentType = bkuSelectionFileUploadContentType; +	} + + +	/** +	 * @return the bkuSelectionFileUploadFileName +	 */ +	public List<String> getBkuSelectionFileUploadFileName() { +		return bkuSelectionFileUploadFileName; +	} + + +	/** +	 * @param bkuSelectionFileUploadFileName the bkuSelectionFileUploadFileName to set +	 */ +	public void setBkuSelectionFileUploadFileName( +			List<String> bkuSelectionFileUploadFileName) { +		this.bkuSelectionFileUploadFileName = bkuSelectionFileUploadFileName; +	} + + +	/** +	 * @return the sendAssertionFileUpload +	 */ +	public List<File> getSendAssertionFileUpload() { +		return sendAssertionFileUpload; +	} + + +	/** +	 * @param sendAssertionFileUpload the sendAssertionFileUpload to set +	 */ +	public void setSendAssertionFileUpload(List<File> sendAssertionFileUpload) { +		this.sendAssertionFileUpload = sendAssertionFileUpload; +	} + + +	/** +	 * @return the sendAssertionFileUploadContentType +	 */ +	public List<String> getSendAssertionFileUploadContentType() { +		return sendAssertionFileUploadContentType; +	} + + +	/** +	 * @param sendAssertionFileUploadContentType the sendAssertionFileUploadContentType to set +	 */ +	public void setSendAssertionFileUploadContentType( +			List<String> sendAssertionFileUploadContentType) { +		this.sendAssertionFileUploadContentType = sendAssertionFileUploadContentType; +	} + + +	/** +	 * @return the sendAssertionFileUploadFileName +	 */ +	public List<String> getSendAssertionFileUploadFileName() { +		return sendAssertionFileUploadFileName; +	} + + +	/** +	 * @param sendAssertionFileUploadFileName the sendAssertionFileUploadFileName to set +	 */ +	public void setSendAssertionFileUploadFileName( +			List<String> sendAssertionFileUploadFileName) { +		this.sendAssertionFileUploadFileName = sendAssertionFileUploadFileName; +	} + + +	/** +	 * @return the deleteBKUTemplate +	 */ +	public boolean isDeleteBKUTemplate() { +		return deleteBKUTemplate; +	} + + +	/** +	 * @param deleteBKUTemplate the deleteBKUTemplate to set +	 */ +	public void setDeleteBKUTemplate(boolean deleteBKUTemplate) { +		this.deleteBKUTemplate = deleteBKUTemplate; +	} + + +	/** +	 * @return the deleteSendAssertionTemplate +	 */ +	public boolean isDeleteSendAssertionTemplate() { +		return deleteSendAssertionTemplate; +	} + + +	/** +	 * @param deleteSendAssertionTemplate the deleteSendAssertionTemplate to set +	 */ +	public void setDeleteSendAssertionTemplate(boolean deleteSendAssertionTemplate) { +		this.deleteSendAssertionTemplate = deleteSendAssertionTemplate;  	}	 +	  } diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java index 0a03ac77b..843844e22 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OAPVP2Config.java @@ -42,6 +42,8 @@ public class OAPVP2Config {  	private final Logger log = Logger.getLogger(OAPVP2Config.class); +	private boolean reLoad = false; +	  	private String metaDataURL = null;  	private String certificateDN = null; @@ -139,6 +141,20 @@ public class OAPVP2Config {  	public void setFileUploadFileName(String fileUploadFileName) {  		this.fileUploadFileName = fileUploadFileName;  	} + +	/** +	 * @return the reLoad +	 */ +	public boolean isReLoad() { +		return reLoad; +	} + +	/** +	 * @param reLoad the reLoad to set +	 */ +	public void setReLoad(boolean reLoad) { +		this.reLoad = reLoad; +	}  } diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java index 25c3f24b9..b0de196ca 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java @@ -34,6 +34,7 @@ import java.security.cert.CertificateException;  import java.util.ArrayList;  import java.util.Date;  import java.util.HashMap; +import java.util.Iterator;  import java.util.List;  import java.util.Map; @@ -63,7 +64,6 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.OASSO;  import at.gv.egovernment.moa.id.commons.db.dao.config.OASTORK;  import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;  import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplicationType; -import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;  import at.gv.egovernment.moa.id.commons.db.dao.config.TemplateType;  import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;  import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType; @@ -85,6 +85,7 @@ import at.gv.egovernment.moa.id.configuration.helper.MailHelper;  import at.gv.egovernment.moa.id.configuration.validation.FormularCustomizationValitator;  import at.gv.egovernment.moa.id.configuration.validation.TargetValidator;  import at.gv.egovernment.moa.id.configuration.validation.ValidationHelper; +import at.gv.egovernment.moa.id.configuration.validation.oa.OAFileUploadValidation;  import at.gv.egovernment.moa.id.configuration.validation.oa.OAGeneralConfigValidation;  import at.gv.egovernment.moa.id.configuration.validation.oa.OAOAUTH20ConfigValidation;  import at.gv.egovernment.moa.id.configuration.validation.oa.OAPVP2ConfigValidation; @@ -126,9 +127,12 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  	private OAOAuth20Config oauth20OA = new OAOAuth20Config();  	private OASTORKConfig storkOA = new OASTORKConfig();  	private FormularCustomization formOA = new FormularCustomization(); -	 +		  	private InputStream stream; +	private Map<String, byte[]> sendAssertionForm = new HashMap<String, byte[]>(); +	private Map<String, byte[]> bkuSelectionForm = new HashMap<String, byte[]>(); +	  	// STRUTS actions  	public String inital() {  		HttpSession session = request.getSession(); @@ -365,6 +369,7 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  		OASTORKConfigValidation validator_stork = new OASTORKConfigValidation();  		FormularCustomizationValitator validator_form = new FormularCustomizationValitator();  		OAOAUTH20ConfigValidation validatior_oauth20 = new OAOAUTH20ConfigValidation(); +		OAFileUploadValidation valiator_fileUpload = new OAFileUploadValidation();  		errors.addAll(validatior_general.validate(generalOA, authUser.isAdmin()));  		errors.addAll(validatior_pvp2.validate(pvp2OA)); @@ -374,6 +379,37 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  		errors.addAll(validator_form.validate(formOA));  		errors.addAll(validatior_oauth20.validate(oauth20OA)); +		//validate BKU-selection template		 +		List<String> templateError = valiator_fileUpload.validate(generalOA.getBkuSelectionFileUploadFileName() +				, generalOA.getBkuSelectionFileUpload(), "validation.general.bkuselection", bkuSelectionForm); +		if (templateError != null && templateError.size() == 0) { +			if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) +				session.setAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE, bkuSelectionForm); +			 +			else +				bkuSelectionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE); + +		} else { +			errors.addAll(templateError); +			 +		} +		 +		//validate send-assertion template +		templateError = valiator_fileUpload.validate(generalOA.getSendAssertionFileUploadFileName() +				, generalOA.getSendAssertionFileUpload(), "validation.general.sendassertion", sendAssertionForm); +		if (templateError != null && templateError.size() == 0) {			 +			if (sendAssertionForm != null && sendAssertionForm.size() > 0) +				session.setAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE, sendAssertionForm); +			 +			else +				sendAssertionForm = (Map<String, byte[]>) session.getAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE); + +		} else { +			errors.addAll(templateError); +			 +		} +		 +		  		// Do not allow SSO in combination with special BKUSelection features  		if (ssoOA.isUseSSO() && (formOA.isOnlyMandateAllowed() || !formOA.isShowMandateLoginButton())) {  			log.warn("Special BKUSelection features can not be used in combination with SSO"); @@ -432,12 +468,26 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  					}  				}  			} + +			//save OA configuration +			String error = saveOAConfigToDatabase(onlineapplication, newentry); +			if (MiscUtil.isNotEmpty(error)) { +				log.warn("OA configuration can not be stored!"); +				addActionError(error); +				 +				formID = Random.nextRandom(); +				session.setAttribute(Constants.SESSION_FORMID, formID); +				return Constants.STRUTS_ERROR_VALIDATION; +			} +			//set metadata reload flag if reload is required   			if (pvp2OA.getMetaDataURL() != null) {  				try {  					if (isMetaDataRefreshRequired -							|| !pvp2OA.getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())) { +							|| !pvp2OA.getMetaDataURL().equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL()) +							|| pvp2OA.getFileUpload() != null +							|| pvp2OA.isReLoad()) {  						log.debug("Set PVP2 Metadata refresh flag.");  						MOAIDConfiguration moaconfig = ConfigurationDBRead.getMOAIDConfiguration(); @@ -451,16 +501,6 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  				}  			} -			 -			String error = saveOAConfigToDatabase(onlineapplication, newentry); -			if (MiscUtil.isNotEmpty(error)) { -				log.warn("OA configuration can not be stored!"); -				addActionError(error); -				 -				formID = Random.nextRandom(); -				session.setAttribute(Constants.SESSION_FORMID, formID); -				return Constants.STRUTS_ERROR_VALIDATION; -			}  		}  		Object nextPageAttr = session.getAttribute(Constants.SESSION_RETURNAREA); @@ -495,9 +535,12 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  		} else  			addActionMessage(LanguageHelper.getGUIString("webpages.oaconfig.success", generalOA.getIdentifier(), request)); -		request.getSession().setAttribute(Constants.SESSION_OAID, null); -		ConfigurationDBUtils.closeSession(); +		//remove session attributes +		session.setAttribute(Constants.SESSION_OAID, null); +		session.removeAttribute(Constants.SESSION_BKUSELECTIONTEMPLATE); +		session.removeAttribute(Constants.SESSION_SENDASSERTIONTEMPLATE); +		ConfigurationDBUtils.closeSession();  		return Constants.STRUTS_SUCCESS;  	} @@ -808,6 +851,7 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  			}  		} +		//store BKU-URLs  		BKUURLS bkuruls = new BKUURLS();  		authoa.setBKUURLS(bkuruls);  		if (authUser.isAdmin()) { @@ -822,6 +866,41 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  			authoa.setTemplates(templates);  		} +		//store BKU-selection and send-assertion templates +		if (authUser.isAdmin()) { +			 +			if(generalOA.isDeleteBKUTemplate()) +				templates.setBKUSelectionTemplate(null); +			 +			if (generalOA.isDeleteSendAssertionTemplate()) +				templates.setSendAssertionTemplate(null); +			 +			 +			if (bkuSelectionForm != null && bkuSelectionForm.size() > 0) { +				TransformsInfoType template = new TransformsInfoType(); +				 +				Iterator<String> interator = bkuSelectionForm.keySet().iterator(); +				template.setFilename(interator.next()); +				template.setTransformation(bkuSelectionForm.get( +						template.getFilename())); +				 +				templates.setBKUSelectionTemplate(template);					 +			} +			 +			if (sendAssertionForm != null && sendAssertionForm.size() > 0) { +				TransformsInfoType template = new TransformsInfoType(); +				 +				Iterator<String> interator = sendAssertionForm.keySet().iterator(); +				template.setFilename(interator.next()); +				template.setTransformation(sendAssertionForm.get( +						template.getFilename())); +				 +				templates.setSendAssertionTemplate(template);					 +			}	 +		} +		 +		 +		//store BKU-selection customization  		BKUSelectionCustomizationType bkuselectioncustom = templates.getBKUSelectionCustomization();  		if (bkuselectioncustom == null) {  			bkuselectioncustom = new BKUSelectionCustomizationType(); @@ -887,6 +966,9 @@ public class EditOAAction extends ActionSupport implements ServletRequestAware,  			bkuselectioncustom.setFontType(formOA.getFontType()); +			bkuselectioncustom.setAppletHeight(formOA.getApplet_height()); +			bkuselectioncustom.setAppletWidth(formOA.getApplet_width()); +			  		}  		// set default transformation if it is empty diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java index a488d919d..ee9b38f74 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/IndexAction.java @@ -138,7 +138,19 @@ public class IndexAction extends ActionSupport implements ServletRequestAware,  	public String authenticate() { -		String key = null; +		ConfigurationProvider config; +		try { +			config = ConfigurationProvider.getInstance(); +			pvp2LoginActiv = config.isPVP2LoginActive(); +						 +		} catch (ConfigurationException e1) { +			log.warn("An internal error occurs.", e1); +			pvp2LoginActiv = false; +		} + +		 +		 +		String key = null;		  		if (MiscUtil.isNotEmpty(username)) {  			if (ValidationHelper.containsPotentialCSSCharacter(username, false)) { @@ -247,7 +259,8 @@ public class IndexAction extends ActionSupport implements ServletRequestAware,  			try {  				ConfigurationProvider config = ConfigurationProvider.getInstance(); -				 +				pvp2LoginActiv = config.isPVP2LoginActive(); +								  				//Decode with HttpPost Binding  				HTTPPostDecoder decode = new HTTPPostDecoder(new BasicParserPool());  				BasicSAMLMessageContext<Response, ?, ?> messageContext = new BasicSAMLMessageContext<Response, SAMLObject, SAMLObject>(); diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/FormularCustomizationValitator.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/FormularCustomizationValitator.java index 6a1eddb14..758aa7dc7 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/FormularCustomizationValitator.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/FormularCustomizationValitator.java @@ -148,6 +148,24 @@ public class FormularCustomizationValitator {  			}  		} +		check = form.getApplet_height(); +		if (MiscUtil.isNotEmpty(check)) { +			if (!ValidationHelper.validateNumber(check)) { +				log.warn("Applet height "+ check + " is no valid number"); +				errors.add(LanguageHelper.getErrorString("validation.general.form.applet.height",  +						new Object[] {ValidationHelper.getPotentialCSSCharacter(true)} )); +			}			 +		} +		 +		check = form.getApplet_width(); +		if (MiscUtil.isNotEmpty(check)) { +			if (!ValidationHelper.validateNumber(check)) { +				log.warn("Applet width "+ check + " is no valid number"); +				errors.add(LanguageHelper.getErrorString("validation.general.form.applet.width",  +						new Object[] {ValidationHelper.getPotentialCSSCharacter(true)} )); +			}			 +		} +		  		return errors;  	} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java new file mode 100644 index 000000000..8887aeaad --- /dev/null +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/validation/oa/OAFileUploadValidation.java @@ -0,0 +1,90 @@ +/* + * 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.validation.oa; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.apache.log4j.Logger; + +import at.gv.egovernment.moa.id.configuration.data.oa.OAGeneralConfig; +import at.gv.egovernment.moa.id.configuration.helper.LanguageHelper; +import at.gv.egovernment.moa.id.configuration.validation.ValidationHelper; +import at.gv.egovernment.moa.util.Base64Utils; +import at.gv.egovernment.moa.util.MiscUtil; + +/** + * @author tlenz + * + */ +public class OAFileUploadValidation { + +	private static final Logger log = Logger.getLogger(OASSOConfigValidation.class); +	 +	public List<String> validate(List<String> fileName, List<File> files, String errorMsgPreFix, Map<String, byte[]> output) { +		 +		List<String> errors = new ArrayList<String>(); +		 +		if (fileName != null) { +			 +			if (fileName.size() > 1) { +				log.info("Only one BKU-selecten template file can be stored"); +				errors.add(LanguageHelper.getErrorString(errorMsgPreFix + ".file.selected")); +			} +			 +			for (int i=0; i<fileName.size(); i++) { +				String filename = fileName.get(i); +				 +				if (MiscUtil.isNotEmpty(filename)) { +					if (ValidationHelper.containsPotentialCSSCharacter(filename, false)) { +						log.info("Filename is not valid"); +						errors.add(LanguageHelper.getErrorString(errorMsgPreFix + ".filename.valid")); +						 +					} else { +						try { +							File file = files.get(i); +							InputStream stream = new FileInputStream(file); +							output.put(filename, IOUtils.toByteArray(stream)); +							stream.close(); +							 +						} catch (IOException e) { +							log.info("File with FileName " +									+ filename +" can not be loaded." , e); +							errors.add(LanguageHelper.getErrorString(errorMsgPreFix + ".file.valid",  +									new Object[] {filename} )); +						}	 +					} +				} +			} +		} +		 +		return errors; +	} +} diff --git a/id/ConfigWebTool/src/main/resources/applicationResources.properties b/id/ConfigWebTool/src/main/resources/applicationResources.properties index 0da6b1ec8..0b59e6a24 100644 --- a/id/ConfigWebTool/src/main/resources/applicationResources.properties +++ b/id/ConfigWebTool/src/main/resources/applicationResources.properties @@ -168,6 +168,15 @@ webpages.oaconfig.general.bku.legacy=SecurityLayerTemplates (Legacy Request)  webpages.oaconfig.general.bku.sltemplate.first=1. SecurityLayer Template  webpages.oaconfig.general.bku.sltemplate.second=2. SecurityLayer Template  webpages.oaconfig.general.bku.sltemplate.third=3. SecurityLayer Template + +webpages.oaconfig.general.bku.delete=L\u00F6schen +webpages.oaconfig.general.bku.bkuselection.header=BKU-Selection Template +webpages.oaconfig.general.bku.bkuselection.filename=Dateiname +webpages.oaconfig.general.bku.bkuselection.upload=Neues Template hochladen +webpages.oaconfig.general.bku.sendassertion.header=Send-Assertion Template +webpages.oaconfig.general.bku.sendassertion.filename=Dateiname +webpages.oaconfig.general.bku.sendassertion.upload=Neues Template hochladen +  webpages.oaconfig.general.identification=Eindeutiger Identifikatior (PublicURLPrefix)  webpages.oaconfig.general.mandate.header=Vollmachten  webpages.oaconfig.general.mandate.profiles=Profile @@ -220,6 +229,8 @@ webpages.oaconfig.general.BKUSelection.header.button.front=Vordergrundfarbe der  webpages.oaconfig.general.BKUSelection.redirectTarget=Targetparameter  webpages.oaconfig.general.BKUSelection.fonttype=Formularschrifttyp  webpages.oaconfig.general.BKUSelection.fonttype.list=Formularschrifttypen +webpages.oaconfig.general.BKUSelection.header.applet.height=Appleth\u00F6he +webpages.oaconfig.general.BKUSelection.header.applet.width=Appletbreite  webpages.oaconfig.sso.header=Single Sign-On  webpages.oaconfig.sso.singlelogouturl=Single Log-Out URL @@ -250,6 +261,7 @@ webpages.oaconfig.saml1.useCondition=Usecondition  webpages.oaconfig.saml1.conditionLength=ConditionLength  webpages.oaconfig.protocols.pvp2.header=PVP2.x Konfiguration +webpages.oaconfig.pvp2.reload=PVP2.x konfiguration neu laden  webpages.oaconfig.pvp2.metaDataURL=URL zu den Metadaten  webpages.oaconfig.pvp2.certifcate=Zertifikat hochladen  webpages.oaconfig.pvp2.certifcate.info=Infos zum Zertifikat @@ -381,6 +393,14 @@ validation.general.oaidentifier.empty=Es wurde kein eindeutiger Identifier f\u00  validation.general.oaidentifier.valid=Der eindeutige Identifier f\u00FCr die Online-Applikation ist keine g\u00FCltige URL.  validation.general.oaidentifier.notunique=Der gew\u00E4hlte eindeutige Identifier ist bereits vorhanden. Eine Eintragung der Online-Applikation ist nicht m\u00F6glich. +validation.general.bkuselection.filename.valid=Der Dateiname des BKU-Selektion Templates enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0} +validation.general.bkuselection.file.valid=Das BKU-Selektion Templates konnte nicht geladen werden. +validation.general.bkuselection.file.selected=Es kann nur EIN BKU-Selektion Template angegeben werden. +validation.general.sendassertion.filename.valid=Der Dateiname des Send-Assertion Templates enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0} +validation.general.sendassertion.file.valid=Das Send-Assertion Templates konnte nicht geladen werden. +validation.general.sendassertion.file.selected=Es kann nur EIN Send-Assertion Template angegeben werden. + +  validation.stork.cpeps.cc=CPEPS L\u00E4ndercode folgt nicht ISO 3166-2  validation.stork.cpeps.empty=CPEPS Konfiguration ist unvollst\u00E4ndig  validation.stork.cpeps.url=CPEPS URL ist ung\u00FCltig @@ -412,3 +432,5 @@ validation.general.form.button.color.back=Die Hintergrundfarbe der BKU-Auswahlbu  validation.general.form.button.color.front=Die Vordergrundfarbe der BKU-Auswahlbuttons enth\\u00E4lt keinen g\\u00FCltigen Hexadezimalwert. (z.B. \\\#FFFFFF)  validation.general.form.appletredirecttarget=Der RedirectTarget beinhaltet einen ung\\u00FCltiten Wert.  validation.general.form.fonttype=Der BKU-Auswahl Schrifttyp enth\u00E4lt nicht erlaubte Zeichen. Folgende Zeichen sind nicht erlaubt\: {0} +validation.general.form.applet.width=Die Appleth\u00F6he ist keine g\\u00FCltige Zahl. +validation.general.form.applet.height=Die Appletbreite ist keine g\\u00FCltige Zahl.
\ No newline at end of file diff --git a/id/ConfigWebTool/src/main/webapp/css/index.css b/id/ConfigWebTool/src/main/webapp/css/index.css index 79f8b4e72..e3d2763c2 100644 --- a/id/ConfigWebTool/src/main/webapp/css/index.css +++ b/id/ConfigWebTool/src/main/webapp/css/index.css @@ -168,8 +168,15 @@ body {  .oa_protocol_area {      clear: both;      margin-left: 25px; -    padding-top: 20px; -    display: none; +    padding-top: 20px;  +} + +.hidden { +	display: none; +} + +.floatClass > .wwgrp { +	clear: none;  }  .oa_protocol_area >h4 { diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp index 2e0e5ea2a..1bb429afa 100644 --- a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp +++ b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp @@ -399,6 +399,7 @@  									<s:file name="moaconfig.fileUpload" key="webpages.moaconfig.sl.transormations.upload" cssClass="textfield_long"></s:file>  								</div>  							</s:iterator> +							  							<s:if test="moaconfig.fileUploadFileName.size() == 0">  									<div id="pvp2_certificate_upload">  									<s:file name="moaconfig.fileUpload" key="webpages.moaconfig.sl.transormations.upload" cssClass="textfield_long"></s:file> diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp index 4e8dfc259..fadf528d1 100644 --- a/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp +++ b/id/ConfigWebTool/src/main/webapp/jsp/editOAGeneral.jsp @@ -240,6 +240,49 @@  									cssClass="textfield_long">  								</s:textfield>  							</div> +							 +							<div class="oa_protocol_area"> +								<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.general.bku.bkuselection.header", request) %></h4> +								<s:iterator value="%{generalOA.bkuSelectionFileUploadFileName}" var="fileNameBKU"> +									<div class="floatClass"> +										<s:label key="webpages.oaconfig.general.bku.bkuselection.filename" value="%{fileNameBKU}"/> +										<s:checkbox key="webpages.oaconfig.general.bku.delete" +																labelposition="left"														 +																cssClass="checkbox" +																name="generalOA.deleteBKUTemplate"></s:checkbox> +									</div> +									<div id="pvp2_certificate_upload"> +										<s:file name="generalOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file> +									</div> +								</s:iterator> +								<s:if test="generalOA.bkuSelectionFileUploadFileName.size() == 0"> +										<div id="pvp2_certificate_upload"> +										<s:file name="generalOA.bkuSelectionFileUpload" key="webpages.oaconfig.general.bku.bkuselection.upload" cssClass="textfield_long"></s:file> +									</div> +								</s:if> +							</div> +							<div class="oa_protocol_area"> +								<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.general.bku.sendassertion.header", request) %></h4> +								<s:iterator value="%{generalOA.sendAssertionFileUploadFileName}" var="fileNameBKU"> +									<div class="floatClass"> +										<s:label 	key="webpages.oaconfig.general.bku.sendassertion.filename"  +															value="%{fileNameBKU}"/> +										<s:checkbox key="webpages.oaconfig.general.bku.delete" +																labelposition="left"														 +																cssClass="checkbox" +																name="generalOA.deleteSendAssertionTemplate"></s:checkbox> +									</div> +									<div id="pvp2_certificate_upload"> +										<s:file name="generalOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file> +									</div> +								</s:iterator> +								<s:if test="generalOA.sendAssertionFileUploadFileName.size() == 0"> +										<div id="pvp2_certificate_upload"> +										<s:file name="generalOA.sendAssertionFileUpload" key="webpages.oaconfig.general.bku.sendassertion.upload" cssClass="textfield_long"></s:file> +									</div> +								</s:if> +							</div> +							  						</div>  					</s:if> @@ -271,7 +314,7 @@  					</div>  					<div class="oa_config_block"> -						<p><strong><%=LanguageHelper.getGUIString("webpages.oaconfig.sso.header", request) %></strong></p> +						<h3><%=LanguageHelper.getGUIString("webpages.oaconfig.sso.header", request) %></h3>  						<s:checkbox name="ssoOA.useSSO"   							value="%{ssoOA.useSSO}" @@ -356,7 +399,7 @@  								<%=LanguageHelper.getGUIString("webpages.oaconfig.menu.oauth20.hidden", request) %>  						  </button> -						<div id="oa_saml1_area" class="oa_protocol_area"> +						<div id="oa_saml1_area" class="oa_protocol_area hidden">  							<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.protocols.saml1.header", request) %></h4>  							<s:if test="authUser.isAdmin()"> @@ -416,9 +459,14 @@  						</div> -						<div id="oa_pvp2_area" class="oa_protocol_area"> +						<div id="oa_pvp2_area" class="oa_protocol_area hidden">  							<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.protocols.pvp2.header", request) %></h4> +							<s:checkbox 	key="webpages.oaconfig.pvp2.reload" +														labelposition="left"														 +														cssClass="checkbox" +														name="pvp2OA.reLoad"></s:checkbox> +						  						  <s:textfield name="pvp2OA.metaDataURL"   								value="%{pvp2OA.metaDataURL}"   								labelposition="left" @@ -433,7 +481,7 @@  							</div>  						</div> -						<div id="oa_oauth20_area" class="oa_protocol_area"> +						<div id="oa_oauth20_area" class="oa_protocol_area hidden">  							<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.protocols.oauth20.header", request) %></h4>  							<s:label key="webpages.oaconfig.oauth20.clientId" value="%{oauth20OA.clientId}"/> @@ -483,7 +531,7 @@  								<%=LanguageHelper.getGUIString("webpages.oaconfig.general.BKUSelection.button.hidden", request) %>  						  </button> -							<div id="formcustom_area" class="oa_protocol_area"> +							<div id="formcustom_area" class="oa_protocol_area hidden">  								<h4><%=LanguageHelper.getGUIString("webpages.oaconfig.general.BKUSelection.header", request) %></h4>  								<div id="formCustomValues">													 @@ -562,6 +610,22 @@  														name="formOA.appletRedirectTarget">  									</s:select> +									<s:textfield name="formOA.applet_height"  +										value="%{formOA.applet_height}"  +										labelposition="left" +										key="webpages.oaconfig.general.BKUSelection.header.applet.height" +										cssClass="textfield_middle" +										id="HEADER_HEIGHT"> +									</s:textfield> +									 +									<s:textfield name="formOA.applet_width"  +										value="%{formOA.applet_width}"  +										labelposition="left" +										key="webpages.oaconfig.general.BKUSelection.header.applet.width" +										cssClass="textfield_middle" +										id="HEADER_WIDTH"> +									</s:textfield> +									  									<s:select list="formOA.fontTypeList"  														key="webpages.oaconfig.general.BKUSelection.fonttype.list"  														labelposition="left" | 
