diff options
Diffstat (limited to 'id/server/idserverlib')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java | 53 | 
1 files changed, 50 insertions, 3 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java index 8aa5c2d1d..249378ffb 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java @@ -22,7 +22,10 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.protocols.stork2; +import at.gv.egovernment.moa.id.auth.builder.BPKBuilder; +import at.gv.egovernment.moa.id.auth.data.IdentityLink;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException; +import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter; @@ -31,6 +34,7 @@ import at.gv.egovernment.moa.id.data.SLOInformationInterface;  import at.gv.egovernment.moa.id.moduls.IAction;  import at.gv.egovernment.moa.id.moduls.IRequest;  import at.gv.egovernment.moa.logging.Logger; +import at.gv.egovernment.moa.util.Constants;  import eu.stork.peps.auth.commons.IPersonalAttributeList;  import eu.stork.peps.auth.commons.PersonalAttribute;  import eu.stork.peps.auth.commons.PersonalAttributeList; @@ -60,10 +64,13 @@ public class MandateRetrievalRequest implements IAction {      private IAuthData authData;      private MOASTORKRequest moaStorkRequest; +    private IdentityLink representingIdentityLink;      public SLOInformationInterface processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, IAuthData authData) throws MOAIDException {          Logger.debug("Entering AttributeRequest for MandateProvider");          httpResp.reset(); +        this.representingIdentityLink = authData.getIdentityLink(); +          OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(req.getOAURL());          if (oaParam == null)              throw new AuthenticationException("stork.12", new Object[]{req.getOAURL()}); @@ -218,6 +225,7 @@ public class MandateRetrievalRequest implements IAction {          return "";      } +      private PersonalAttribute marshallComplexAttribute(PersonalAttribute currentAttribute, Object obj) {    // TODO refactor          StringWriter stringWriter = new StringWriter();          try { @@ -398,10 +406,49 @@ public class MandateRetrievalRequest implements IAction {      } -    private RepresentationPersonType getRepresentative(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) { +    private String getRepresentedStorkeIdentifier(String identificationType, String identificationValue) { + +    } + +    private String getRepresentingStorkeIdentifier(MandateContainer mandateContainer) throws MOAIDException { +        if ((this.representingIdentityLink == null)) { +            Logger.error("Error accessing identityLink while fetching mandate attribute"); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } + +        if ((this.moaStorkRequest.getStorkAttrQueryRequest().getSpCountry() == null) || (this.moaStorkRequest.getStorkAttrQueryRequest().getSpCountry().length() == 0)) { +            Logger.error("Error accessing SP country code"); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } + +        if (!this.representingIdentityLink.getIdentificationType().equals(Constants.URN_PREFIX_BASEID)) { +            Logger.error("Incorrect identity link (local): identification type is not correct! Got: " + this.representingIdentityLink.getIdentificationType()); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } + +        if (!mandateContainer.getPhysicalRepresentativeIdentificationType().equals(Constants.URN_PREFIX_BASEID)) { +            Logger.error("Incorrect identity link (MIS): identification type is not correct! Got: " + this.representingIdentityLink.getIdentificationType()); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } + +        if (!mandateContainer.getPhysicalRepresentativeIdentificationValue().equals(this.representingIdentityLink.getIdentificationValue())) { +            Logger.error("Identification values from MIS and local service are not equal!"); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } + +        BPKBuilder bpkBuilder = new BPKBuilder(); +        try { +            return bpkBuilder.buildStorkeIdentifier(this.representingIdentityLink, this.moaStorkRequest.getStorkAttrQueryRequest().getSpCountry()); +        } catch (BuildException be) { +            Logger.error("Could not build STORK eIdentifier while generating mandate assertion."); +            throw new MOAIDException("stork.20", new Object[]{}); // TODO +        } +    } + +    private RepresentationPersonType getRepresentative(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) throws MOAIDException {          RepresentationPersonType representative = new RepresentationPersonType(); -        representative.setEIdentifier(""); // TODO CALCULATE +        representative.setEIdentifier(getRepresentingStorkeIdentifier(mandateContainer));          representative.setGivenName(mandateContainer.getPhysicalRepresentativeGivenName());          representative.setSurname(mandateContainer.getPhysicalRepresentativeFamilyName());          representative.setDateOfBirth(mandateContainer.getPhysicalRepresentativeBirthDate()); @@ -414,7 +461,7 @@ public class MandateRetrievalRequest implements IAction {          RepresentationPersonType represented = new RepresentationPersonType();          if (mandateContainer instanceof CorporateBodyMandateContainer) { -            CorporateBodyMandateContainer corporateBodyMandateContainer = (CorporateBodyMandateContainer)mandateContainer; +            CorporateBodyMandateContainer corporateBodyMandateContainer = (CorporateBodyMandateContainer) mandateContainer;              represented.setELPIdentifier("AT/" + corporateBodyMandateContainer.getCorpMandatorIdentificationValue());              represented.setName(corporateBodyMandateContainer.getCorpMandatorFullName());              represented.setAddress(""); | 
