package fi.otavanopisto.muikku.plugins.oauth;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import org.apache.commons.lang3.StringUtils;
import fi.otavanopisto.muikku.controller.PluginSettingsController;
import fi.otavanopisto.muikku.events.LogoutEvent;
@ApplicationScoped
public class PyramusOAuthLogoutListener {
@Inject
private Logger logger;
@Inject
private PluginSettingsController pluginSettingsController;
public void onLogoutEvent(@Observes LogoutEvent event) {
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext != null) {
ExternalContext externalContext = facesContext.getExternalContext();
if (externalContext != null) {
try {
String logoutUrl = pluginSettingsController.getPluginSetting(PyramusOAuthPluginDescriptor.PLUGIN_NAME, "oauth.logoutUrl");
if (StringUtils.isNotBlank(logoutUrl)) {
externalContext.redirect(logoutUrl);
}
} catch (IOException e) {
logger.log(Level.SEVERE, "Could not redirect browser into Pyramus logout URL", e);
}
}
}
}
}