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)?
...