package org.apereo.cas.adaptors.azure.web.flow;
import org.apache.commons.lang3.RandomStringUtils;
import org.apereo.cas.adaptors.azure.AzureAuthenticatorTokenCredential;
import org.apereo.cas.configuration.model.support.mfa.MultifactorAuthenticationProperties;
import org.apereo.cas.web.support.WebUtils;
import org.springframework.webflow.action.AbstractAction;
import org.springframework.webflow.action.EventFactorySupport;
import org.springframework.webflow.execution.Event;
import org.springframework.webflow.execution.RequestContext;
/**
* This is {@link AzureAuthenticatorGenerateTokenAction}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public class AzureAuthenticatorGenerateTokenAction extends AbstractAction {
private final MultifactorAuthenticationProperties.Azure.AuthenticationModes mode;
public AzureAuthenticatorGenerateTokenAction(final MultifactorAuthenticationProperties.Azure.AuthenticationModes mode) {
this.mode = mode;
}
@Override
public Event doExecute(final RequestContext requestContext) throws Exception {
final Integer code = Integer.valueOf(RandomStringUtils.randomNumeric(8));
final AzureAuthenticatorTokenCredential c = new AzureAuthenticatorTokenCredential();
c.setToken(code.toString());
WebUtils.putCredential(requestContext, c);
requestContext.getFlowScope().put("azureToken", code);
if (mode == MultifactorAuthenticationProperties.Azure.AuthenticationModes.POUND) {
return new EventFactorySupport().event(this, "authenticate");
}
return success();
}
}