package org.apereo.cas.web.flow; import org.apache.commons.lang3.tuple.Pair; import org.apereo.cas.authentication.Credential; import org.apereo.cas.authentication.principal.Principal; import org.apereo.cas.ticket.registry.TicketRegistrySupport; import org.apereo.cas.web.support.WebUtils; import org.springframework.webflow.execution.RequestContext; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * This is {@link DefaultAcceptableUsagePolicyRepository}. * * @author Misagh Moayyed * @since 4.2 */ public class DefaultAcceptableUsagePolicyRepository extends AbstractPrincipalAttributeAcceptableUsagePolicyRepository { private static final long serialVersionUID = -3059445754626980894L; private final Map<String, Boolean> policyMap = new ConcurrentHashMap<>(); public DefaultAcceptableUsagePolicyRepository(final TicketRegistrySupport ticketRegistrySupport) { super(ticketRegistrySupport); } @Override public Pair<Boolean, Principal> verify(final RequestContext requestContext, final Credential credential) { final String key = credential.getId(); final Principal principal = WebUtils.getPrincipalFromRequestContext(requestContext, this.ticketRegistrySupport); if (this.policyMap.containsKey(key)) { return Pair.of(this.policyMap.get(key), principal); } return Pair.of(false, principal); } @Override public boolean submit(final RequestContext requestContext, final Credential credential) { this.policyMap.put(credential.getId(), Boolean.TRUE); return this.policyMap.containsKey(credential.getId()); } }