Page History
...
Code Block |
---|
public Actor getActor(SecurityContext sc) throwthrows SecurityException { if (sc.getTicket.isValid()) { throw new SecurityException("Sikkerhedsbilletten er ikke valid"); } Actor doctor = matchDoctor(sc); Actor nurse = matchNurse(sc); Actor nurseOnBehalfOf = matchNurseOnBehalfOfDoctor(sc); Actor healthCareProfessional = matchHealthCareProfessional(sc); Actor executiveHealthCareProfessional = matchExecutiveHealthCareProfessional(sc); Actor healthCareProfessionalOnBehalfOfDoctor = matchHealthCareProfessionalOnBehalfOfDoctor(sc); Actor trustedSystemUser = matchTrustedSystemUser(sc); Actor actor = checkExactlyOneActorHasBeenDetemined(doctor, nurse, nurseOnBehalfOf, executiveHealthCareProfessional, healthCareProfessionalOnBehalfOfDoctor, trustedSystemUser); return actor; } private checkExactlyOneActorHasBeenDetemined(Actor determined...) throws SecurityException { // Tjekker, at der er præcist een ellers smides exception } private Actor matchDoctor(SecurityContext sc) { // Tjekker om nødvendige bruger og organisation findes. Der må ikke være en på-vegne-af-bruger i for denne aktør if (!sc.getActingUser().isPresent() || sc.getResponsibleUser().isPresent() || !sc.getOrganisation().isPresent()) { return null; } // Matcher brugertypen if (!sc.getActingUser().get().getUserType() != UserType.HealthcareProfessional) { return null; } // Matcher identifier typen if (!sc.getActingUser().get().getUserType().equals(UserType.HealthcareProfessional)) { return null; } // Tjekker, at der er tale om en CPR identifier på brugeren .... // Tjek, at der findes en autorisationskode .... // Tjekker, at der findes en uddannelseskode og at den er af typen '7071' dvs læge .... return new DoctorActor(sc.getActingUser().get().getIdentifier(), sc.getActingUser().get().getCredentials().get().getAuthorizationCode().get()); } private Actor matchTrustedSystemUser(SecurityContext sc) { // Der må ikke være brugere tilstede på security context if (sc.getActingUser().isPresent() || sc.getResponsibleUser().isPresent()) { return null; } // Tjek, at der findes en organisation og at identifier typen for denne er CVR .... return new TrustedSystemUser(sc.getOrganisation().get().getIdentifier()); } |
...
Code Block |
---|
public Actor transformActor(Actor actor, ValidatedHsuidAttributes hsuid) throws SecurityException { if (actor.isTrustedSystemUser()) { // Tjek, at den trustede bruger har et CVR nummer, der er godkendt if (isTrusted(((TrustedSystemUser) actor).getCVR()))) { throw new SecurityException("CVR nummeret er ikke trustet"); } // Hsuid skal angive, at der er tale om en sundhedsprofessionelbruger for at transformation kan foregå if (hsuid.isHealthCareProfessional()) { ValidatedHealthcareProfessionalHsuidAttributes healthcareProfHsuid = hsuid.getValidatedHealthcareProfessionalHsuidAttributes(); String autorisationsId = validatedHealthcareProfessionalHsuidAttributes.getUserAuthorizationCode(); String uddannelsesKode = verifyAutorisationsIdAndLookupUddannelsesKode(autorisationsId); // Tjekker, at uddannelseskode findes og identificerer en doktor ... // Tjekker om der er tale på vegne af if (healthcareProfHsuid.getResponsibleUserCivilRegistrationNumber() != null) { // Nu blev vi lige sundhedsfaglig på vegne af læge return new HealthCareProfessionalOnBehalfOfDoctor(healthcareProfHsuid.getActingUserCivilRegistrationNumber(), healthcareProfHsuid.getResponsibleUserCivilRegistrationNumber(), autorisationsId); } else { // Nu blev vi læge return new DoctorActor(healthcareProfHsuid.getActingUserCivilRegistrationNumber(), autorisationsId); } } } return actor; } |
ActorEnricher: Tilføjer information til Actor
Til sidst kalder vi " public Actor enrichActor(Actor, HSUID) " på en ActorEnricher som
returnerer den samme type actor men nu med en SOR kode da denne jo kun findes i HSUID lige nu.