diff options
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java')
-rw-r--r-- | eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java index 135eeec1..38a7076a 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/AlternativeSearchTask.java @@ -53,7 +53,8 @@ import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSIT * Searches registers (ERnP and ZMR) after alternative eIDAS authn, before adding person to SZR. * Input: * <ul> - * <li>{@link Constants#DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE}</li> + * <li>{@link Constants#DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE} data from the alternative eIDAS authn</li> + * <li>{@link Constants#DATA_SIMPLE_EIDAS} data from the initial eIDAS authn</li> * </ul> * Output: * <ul> @@ -94,8 +95,10 @@ public class AlternativeSearchTask extends AbstractAuthServletTask { public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) throws TaskExecutionException { try { - final SimpleEidasData eidasData = convertEidasAttrToSimpleData(); - step11RegisterSearchWithPersonIdentifier(executionContext, eidasData); + final SimpleEidasData altEidasData = convertEidasAttrToSimpleData(); + final SimpleEidasData initialEidasData = MatchingTaskUtils.getInitialEidasData(pendingReq); + // TODO Verify that altEidasData and initialEidasData "match"? + step11RegisterSearchWithPersonIdentifier(executionContext, altEidasData, initialEidasData); } catch (WorkflowException e) { throw new TaskExecutionException(pendingReq, "Initial search failed", e); } catch (final Exception e) { @@ -105,15 +108,17 @@ public class AlternativeSearchTask extends AbstractAuthServletTask { } private void step11RegisterSearchWithPersonIdentifier( - ExecutionContext executionContext, SimpleEidasData eidasData) throws WorkflowException, EaafStorageException { + ExecutionContext executionContext, SimpleEidasData initialEidasData, SimpleEidasData altEidasData) + throws WorkflowException, EaafStorageException { try { log.trace("Starting step11RegisterSearchWithPersonIdentifier"); - RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(eidasData); + RegisterStatusResults searchResult = registerSearchService.searchWithPersonIdentifier(altEidasData); int resultCount = searchResult.getResultCount(); if (resultCount == 0) { - step12CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), eidasData); + step12CountrySpecificSearch(executionContext, searchResult.getOperationStatus(), initialEidasData, + altEidasData); } else if (resultCount == 1) { - foundMatchFinalizeTask(searchResult, eidasData); + foundMatchFinalizeTask(searchResult, altEidasData); } else { throw new WorkflowException("step11RegisterSearchWithPersonIdentifier", "More than one entry with unique personal-identifier", true); @@ -125,21 +130,22 @@ public class AlternativeSearchTask extends AbstractAuthServletTask { } } - private void step12CountrySpecificSearch( - ExecutionContext executionContext, RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData) + private void step12CountrySpecificSearch(ExecutionContext executionContext, + RegisterOperationStatus registerOperationStatus, + SimpleEidasData initialEidasData, + SimpleEidasData altEidasData) throws EaafStorageException, WorkflowException { log.trace("Starting 'step12CountrySpecificSearch' ... "); RegisterStatusResults searchResult = registerSearchService.searchWithCountrySpecifics( - registerOperationStatus, eidasData); + registerOperationStatus, altEidasData); if (searchResult.getResultCount() == 0) { log.trace("'step12CountrySpecificSearch' ends with no result. Forward to GUI based matching step ... "); log.debug("Forward to GUI based matching steps ... "); executionContext.put(TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK, true); } else if (searchResult.getResultCount() == 1) { log.trace("'step12CountrySpecificSearch' finds a person. Forward to 'step7aKittProcess' step ... "); - // TODO is step 7b kitt different from step 7a? - registerSearchService.step7aKittProcess(searchResult, eidasData); - foundMatchFinalizeTask(searchResult, eidasData); + registerSearchService.step7bKittProcess(searchResult, initialEidasData, altEidasData); + foundMatchFinalizeTask(searchResult, altEidasData); } else { throw new WorkflowException("step12CountrySpecificSearch", "More than one entry with unique country-specific information", true); |