aboutsummaryrefslogtreecommitdiff
path: root/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java')
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditOAAction.java184
1 files changed, 152 insertions, 32 deletions
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 e07a0ba77..1a8e0048b 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
@@ -18,6 +18,7 @@ import org.apache.struts2.interceptor.ServletResponseAware;
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.AuthComponentOA;
+import at.gv.egovernment.moa.id.commons.db.dao.config.BKUSelectionCustomizationType;
import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS;
import at.gv.egovernment.moa.id.commons.db.dao.config.IdentificationNumber;
import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;
@@ -72,8 +73,13 @@ ServletResponseAware {
private boolean newOA;
private String formID;
- private String nextPage;
+ private boolean onlyBusinessService = false;
+ private boolean subTargetSet = false;
+ private boolean deaktivededBusinessService = false;
+ private boolean isMetaDataRefreshRequired = false;
+ private String nextPage;
+
private OAGeneralConfig generalOA = new OAGeneralConfig();
private OAPVP2Config pvp2OA = new OAPVP2Config();
private OASAML1Config saml1OA = new OASAML1Config();
@@ -99,13 +105,15 @@ ServletResponseAware {
return Constants.STRUTS_ERROR;
}
oaid = Long.valueOf(oaidobj);
-
+
+ UserDatabase userdb = null;
OnlineApplication onlineapplication = null;;
+
if (authUser.isAdmin())
onlineapplication = ConfigurationDBRead.getOnlineApplication(oaid);
else {
- UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+ userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null
&& !userdb.isIsMailAddressVerified()) {
@@ -113,6 +121,8 @@ ServletResponseAware {
addActionError(LanguageHelper.getErrorString("error.editoa.mailverification"));
}
+
+ //TODO: change to direct Database operation
List<OnlineApplication> oas = userdb.getOnlineApplication();
for (OnlineApplication oa : oas) {
if (oa.getHjid() == oaid) {
@@ -129,6 +139,7 @@ ServletResponseAware {
generalOA.parse(onlineapplication);
ssoOA.parse(onlineapplication);
saml1OA.parse(onlineapplication);
+
List<String> errors = pvp2OA.parse(onlineapplication);
if (errors.size() > 0) {
@@ -136,8 +147,13 @@ ServletResponseAware {
addActionError(el);
}
+ subTargetSet = MiscUtil.isNotEmpty(generalOA.getTarget_subsector());
+
+ //set UserSpezific OA Parameters
+ if (!authUser.isAdmin())
+ generateUserSpecificConfigurationOptions(userdb);
+
ConfigurationDBUtils.closeSession();
-
session.setAttribute(Constants.SESSION_OAID, oaid);
formID = Random.nextRandom();
@@ -165,14 +181,18 @@ ServletResponseAware {
authUser = (AuthenticatedUser) authUserObj;
UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
+
if (!authUser.isAdmin() && userdb.isIsMailAddressVerified() != null
&& !userdb.isIsMailAddressVerified()) {
log.info("Online-Applikation managemant disabled. Mail address is not verified.");
addActionError(LanguageHelper.getErrorString("error.editoa.mailverification"));
}
+
+ //set UserSpezific OA Parameters
+ if (!authUser.isAdmin())
+ generateUserSpecificConfigurationOptions(userdb);
newOA = true;
-
formID = Random.nextRandom();
session.setAttribute(Constants.SESSION_FORMID, formID);
@@ -205,7 +225,8 @@ ServletResponseAware {
session.setAttribute(Constants.SESSION_FORMID, null);
UserDatabase userdb = ConfigurationDBRead.getUserWithID(authUser.getUserID());
- if (!authUser.isAdmin() && !userdb.isIsMailAddressVerified()) {
+ if (!authUser.isAdmin() &&
+ userdb.isIsMailAddressVerified() != null && !userdb.isIsMailAddressVerified()) {
log.info("Online-Applikation managemant disabled. Mail address is not verified.");
addActionError(LanguageHelper.getErrorString("error.editoa.mailverification"));
return Constants.STRUTS_SUCCESS;
@@ -265,7 +286,11 @@ ServletResponseAware {
}
}
}
-
+
+ //set UserSpezific OA Parameters
+ if (!authUser.isAdmin())
+ generateUserSpecificConfigurationOptions(userdb);
+
//check form
OAGeneralConfigValidation validatior_general = new OAGeneralConfigValidation();
OAPVP2ConfigValidation validatior_pvp2 = new OAPVP2ConfigValidation();
@@ -279,6 +304,13 @@ ServletResponseAware {
errors.addAll(validatior_sso.validate(ssoOA, authUser.isAdmin()));
errors.addAll(validator_stork.validate(storkOA));
+ //Do not allow SSO in combination with special BKUSelection features
+ if (ssoOA.isUseSSO() &&
+ ( generalOA.isOnlyMandateAllowed() || !generalOA.isShowMandateLoginButton()) ) {
+ log.warn("Special BKUSelection features can not be used in combination with SSO");
+ errors.add(LanguageHelper.getErrorString("validation.general.bkuselection.specialfeatures.valid"));
+ }
+
if (errors.size() > 0) {
log.info("OAConfiguration with ID " + generalOA.getIdentifier() + " has some errors.");
for (String el : errors)
@@ -289,7 +321,7 @@ ServletResponseAware {
return Constants.STRUTS_ERROR_VALIDATION;
} else {
-
+
boolean newentry = false;
if (onlineapplication == null) {
@@ -300,7 +332,8 @@ ServletResponseAware {
if (!authUser.isAdmin()) {
onlineapplication.setIsAdminRequired(true);
- }
+ } else
+ isMetaDataRefreshRequired = true;
} else {
@@ -321,6 +354,7 @@ ServletResponseAware {
&& onlineapplication.isIsAdminRequired()) ) {
onlineapplication.setIsAdminRequired(false);
+ isMetaDataRefreshRequired = true;
if (onlineapplication.getHjid() != null)
userdb = ConfigurationDBRead.getUsersWithOADBID(onlineapplication.getHjid());
@@ -342,9 +376,10 @@ ServletResponseAware {
if (pvp2OA.getMetaDataURL() != null) {
try {
- if (newentry || !pvp2OA.getMetaDataURL()
- .equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())) {
+ if (isMetaDataRefreshRequired || !pvp2OA.getMetaDataURL().
+ equals(onlineapplication.getAuthComponentOA().getOAPVP2().getMetadataURL())) {
+ log.debug("Set PVP2 Metadata refresh flag.");
MOAIDConfiguration moaconfig = ConfigurationDBRead.getMOAIDConfiguration();
moaconfig.setPvp2RefreshItem(new Date());
ConfigurationDBUtils.saveOrUpdate(moaconfig);
@@ -576,7 +611,8 @@ ServletResponseAware {
dboa.setPublicURLPrefix(generalOA.getIdentifier());
- if (generalOA.isBusinessService()) {
+ if (generalOA.isBusinessService() || onlyBusinessService) {
+
dboa.setType(Constants.MOA_CONFIG_BUSINESSSERVICE);
String num = generalOA.getIdentificationNumber().replaceAll(" ", "");
@@ -609,37 +645,36 @@ ServletResponseAware {
dboa.setTargetFriendlyName(generalOA.getTargetFriendlyName());
} else {
- String target_full = generalOA.getTarget();
- String[] target_split = target_full.split("-");
- if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()))
- dboa.setTarget(target_split[0] + "-" + generalOA.getTarget_subsector());
+
+ String target = generalOA.getTarget();
+
+ if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()) && subTargetSet)
+ dboa.setTarget(target + "-" + generalOA.getTarget_subsector());
else
- dboa.setTarget(target_full);
+ dboa.setTarget(target);
- String targetname = TargetValidator.getTargetFriendlyName(target_full);
+ String targetname = TargetValidator.getTargetFriendlyName(target);
if (MiscUtil.isNotEmpty(targetname))
dboa.setTargetFriendlyName(targetname);
- else
- dboa.setTargetFriendlyName(TargetValidator.getTargetFriendlyName(target_split[0]));
+
}
} else {
+
if (MiscUtil.isNotEmpty(generalOA.getTarget())) {
- String target_full = generalOA.getTarget();
- String[] target_split = target_full.split("-");
- dboa.setTarget(target_split[0] + "-" + generalOA.getTarget_subsector());
- if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()))
- dboa.setTarget(target_split[0] + "-" + generalOA.getTarget_subsector());
+ String target = generalOA.getTarget();
+
+ if (MiscUtil.isNotEmpty(generalOA.getTarget_subsector()) && subTargetSet)
+ dboa.setTarget(target + "-" + generalOA.getTarget_subsector());
else
- dboa.setTarget(target_full);
+ dboa.setTarget(target);
- String targetname = TargetValidator.getTargetFriendlyName(target_full);
+ String targetname = TargetValidator.getTargetFriendlyName(target);
if (MiscUtil.isNotEmpty(targetname))
dboa.setTargetFriendlyName(targetname);
- else
- dboa.setTargetFriendlyName(TargetValidator.getTargetFriendlyName(target_split[0]));
+
}
}
}
@@ -693,6 +728,30 @@ ServletResponseAware {
if (template != null && template.size() > 0)
template.clear();
}
+
+
+ BKUSelectionCustomizationType bkuselectioncustom = templates.getBKUSelectionCustomization();
+ if (bkuselectioncustom == null) {
+ bkuselectioncustom = new BKUSelectionCustomizationType();
+ templates.setBKUSelectionCustomization(bkuselectioncustom);
+ }
+
+ if (MiscUtil.isNotEmpty(generalOA.getBkuSelectionBackGroundColor())) {
+ String value;
+ if (!generalOA.getBkuSelectionBackGroundColor().startsWith("#"))
+ value = "#" + generalOA.getBkuSelectionBackGroundColor();
+ else
+ value = generalOA.getBkuSelectionBackGroundColor();
+
+ bkuselectioncustom.setBackGroundColor(value);
+
+ } else {
+ bkuselectioncustom.setBackGroundColor("");
+ }
+
+ bkuselectioncustom.setMandateLoginButton(generalOA.isShowMandateLoginButton());
+ bkuselectioncustom.setOnlyMandateLoginAllowed(generalOA.isOnlyMandateAllowed());
+
}
//set default transformation if it is empty
@@ -784,6 +843,29 @@ ServletResponseAware {
return null;
}
+ private void generateUserSpecificConfigurationOptions(UserDatabase userdb) {
+
+ if (userdb.isIsMandateUser() != null && userdb.isIsMandateUser()) {
+ String bpk = userdb.getBpk();
+ if (bpk.startsWith(Constants.IDENIFICATIONTYPE_BASEID_FN) ||
+ bpk.startsWith(Constants.IDENIFICATIONTYPE_BASEID_ZVR)) {
+
+ onlyBusinessService = true;
+ generalOA.setBusinessService(true);
+
+ }
+
+ deaktivededBusinessService = true;
+ String[] split = bpk.split("\\+");
+ generalOA.setIdentificationType(split[1].substring(1));
+ generalOA.setIdentificationNumber(split[2]);
+
+ }
+
+
+
+ }
+
public String setGeneralOAConfig() {
return Constants.STRUTS_SUCCESS;
@@ -925,8 +1007,46 @@ ServletResponseAware {
public void setFormID(String formID) {
this.formID = formID;
}
-
-
-
+ /**
+ * @return the onlyBusinessService
+ */
+ public boolean isOnlyBusinessService() {
+ return onlyBusinessService;
+ }
+
+ /**
+ * @param onlyBusinessService the onlyBusinessService to set
+ */
+ public void setOnlyBusinessService(boolean onlyBusinessService) {
+ this.onlyBusinessService = onlyBusinessService;
+ }
+
+ /**
+ * @return the subTargetSet
+ */
+ public boolean isSubTargetSet() {
+ return subTargetSet;
+ }
+
+ /**
+ * @param subTargetSet the subTargetSet to set
+ */
+ public void setSubTargetSet(boolean subTargetSet) {
+ this.subTargetSet = subTargetSet;
+ }
+
+ /**
+ * @return the deaktivededBusinessService
+ */
+ public boolean isDeaktivededBusinessService() {
+ return deaktivededBusinessService;
+ }
+
+ /**
+ * @param deaktivededBusinessService the deaktivededBusinessService to set
+ */
+ public void setDeaktivededBusinessService(boolean deaktivededBusinessService) {
+ this.deaktivededBusinessService = deaktivededBusinessService;
+ }
}