Page History
...
I det følgende vil vi give et eksempel i pseudokode på, hvordan matchHealthCareProfessional matchDoctor og matchTrustedSystemUser vil kunne se ud:
Code Block |
---|
public Actor getActor(SecurityContext sc) { 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 matchHealthCareProfessionalmatchDoctor(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 (!securityContextsc.getActingUser().isPresent() || securityContextsc.getResponsibleUser().isPresent() || !securityContextsc.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()); } |
TODO kode eksempel fra DDS (måske pseudokode for at hjælpe)?
...