use of se.inera.intyg.webcert.web.service.signatur.dto.SignaturTicket in project webcert by sklintyg.
the class SignaturServiceImplTest method userNotAuthorizedClientSignature.
@Test(expected = WebCertServiceException.class)
public void userNotAuthorizedClientSignature() throws IOException {
when(mockUtkastRepository.findOne(INTYG_ID)).thenReturn(completedUtkast);
SignaturTicket ticket = intygSignatureService.createDraftHash(INTYG_ID, completedUtkast.getVersion());
user.setVardgivare(Collections.<Vardgivare>emptyList());
intygSignatureService.clientSignature(ticket.getId(), "test");
}
use of se.inera.intyg.webcert.web.service.signatur.dto.SignaturTicket in project webcert by sklintyg.
the class SignaturTicketTrackerTest method updateStatus.
@Test
public void updateStatus() {
tracker.trackTicket(new SignaturTicket("id", PAGAENDE_SIG_ID, BEARBETAR, "intygid", 1, LocalDateTime.now(), "1234", LocalDateTime.now()));
tracker.updateStatus("id", SIGNERAD);
SignaturTicket tracked = tracker.getTicket("id");
assertEquals(SIGNERAD, tracked.getStatus());
}
use of se.inera.intyg.webcert.web.service.signatur.dto.SignaturTicket in project webcert by sklintyg.
the class SignaturServiceImpl method clientNiasSignature.
@Override
public SignaturTicket clientNiasSignature(String ticketId, SignatureType signatureType, String niasCertificate, WebCertUser user) {
// Lookup signature ticket
SignaturTicket ticket = ticketTracker.getTicket(ticketId);
if (ticket == null) {
LOG.warn("Ticket '{}' hittades ej", ticketId);
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INVALID_STATE, "Biljett " + ticketId + " hittades ej");
}
LOG.debug("Klientsignering ticket '{}' intyg '{}'", ticket.getId(), ticket.getIntygsId());
// Fetch the draft
Utkast utkast = getUtkastForSignering(ticket.getIntygsId(), ticket.getVersion(), user);
// Create and persist the new signature
StringWriter sw = new StringWriter();
JAXB.marshal(signatureType, sw);
String rawSignaturXml = sw.toString();
ticket = createAndPersistSignature(utkast, ticket, rawSignaturXml, user);
monitoringService.logIntygSigned(utkast.getIntygsId(), utkast.getIntygsTyp(), user.getHsaId(), user.getAuthenticationScheme(), utkast.getRelationKod());
// Notify stakeholders when certificate has been signed
notificationService.sendNotificationForDraftSigned(utkast);
LogRequest logRequest = LogRequestFactory.createLogRequestFromUtkast(utkast);
// Note that we explictly supplies the WebCertUser here. The NIAS finalization is not executed in a HTTP
// request context and thus we need to supply the user instance manually.
logService.logSignIntyg(logRequest, logService.getLogUser(user));
intygService.handleAfterSigned(utkast);
return ticketTracker.updateStatus(ticket.getId(), SignaturTicket.Status.SIGNERAD);
}
use of se.inera.intyg.webcert.web.service.signatur.dto.SignaturTicket in project webcert by sklintyg.
the class SignaturTicketTracker method updateStatus.
public synchronized SignaturTicket updateStatus(String id, SignaturTicket.Status status) {
SignaturTicket ticket = getTicket(id);
if (ticket != null) {
LOG.info("Updating status {}", ticket);
ticket = ticket.withStatus(status);
ticketMap.put(ticket.getId(), ticket);
} else {
LOG.info("Updating status failed, no ticket {}", id);
}
return ticket;
}
use of se.inera.intyg.webcert.web.service.signatur.dto.SignaturTicket in project webcert by sklintyg.
the class GrpSignaturServiceImpl method startGrpAuthentication.
@Override
public SignaturTicket startGrpAuthentication(String intygId, long version) {
Utkast utkast = utkastRepository.findOne(intygId);
validateUtkast(intygId, utkast);
WebCertUser webCertUser = webCertUserService.getUser();
validateWebCertUser(webCertUser);
String personId = webCertUser.getPersonId();
validatePersonId(personId);
SignaturTicket draftHash = signaturService.createDraftHash(intygId, utkast.getVersion());
AuthenticateRequestType authRequest = buildAuthRequest(personId, draftHash);
OrderResponseType orderResponse;
try {
orderResponse = grpService.authenticate(authRequest);
} catch (GrpFault grpFault) {
signaturTicketTracker.updateStatus(draftHash.getId(), SignaturTicket.Status.OKAND);
Optional<FaultStatusType> status = Optional.ofNullable(grpFault.getFaultInfo()).map(GrpFaultType::getFaultStatus);
if (status.isPresent()) {
LOG.warn("Fault signing utkast with id {} with GRP. FaultStatus: {}", intygId, status.get().name());
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.GRP_PROBLEM, status.get().name());
} else {
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.UNKNOWN_INTERNAL_PROBLEM, grpFault.getMessage());
}
}
// If we could init the authentication, we create a SignaturTicket, reusing
// the mechanism already present for SITHS
String orderRef = orderResponse.getOrderRef();
String transactionId = validateOrderResponseTxId(authRequest, orderResponse);
startAsyncCollectPoller(orderRef, transactionId);
return draftHash;
}
Aggregations