package org.apereo.cas.ticket.registry;
import org.apereo.cas.authentication.Authentication;
import org.apereo.cas.authentication.principal.Principal;
import org.apereo.cas.ticket.TicketGrantingTicket;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
* This is {@link DefaultTicketRegistrySupport}.
*
* @author Misagh Moayyed
* @author Dmitriy Kopylenko
* @since 4.2.0
*/
@Transactional(transactionManager = "ticketTransactionManager")
public class DefaultTicketRegistrySupport implements TicketRegistrySupport {
private final TicketRegistry ticketRegistry;
public DefaultTicketRegistrySupport(final TicketRegistry ticketRegistry) {
this.ticketRegistry = ticketRegistry;
}
@Override
public Authentication getAuthenticationFrom(final String ticketGrantingTicketId) throws RuntimeException {
final TicketGrantingTicket tgt = this.ticketRegistry.getTicket(ticketGrantingTicketId, TicketGrantingTicket.class);
return tgt == null ? null : tgt.getAuthentication();
}
@Override
public Principal getAuthenticatedPrincipalFrom(final String ticketGrantingTicketId) throws RuntimeException {
final Authentication auth = getAuthenticationFrom(ticketGrantingTicketId);
return auth == null ? null : auth.getPrincipal();
}
@Override
public Map<String, Object> getPrincipalAttributesFrom(final String ticketGrantingTicketId) throws RuntimeException {
final Principal principal = getAuthenticatedPrincipalFrom(ticketGrantingTicketId);
return principal == null ? null : principal.getAttributes();
}
@Override
public void updateAuthentication(final String ticketGrantingTicketId, final Authentication authentication) {
final TicketGrantingTicket tgt = this.ticketRegistry.getTicket(ticketGrantingTicketId, TicketGrantingTicket.class);
tgt.getAuthentication().update(authentication);
this.ticketRegistry.updateTicket(tgt);
}
}