package org.ovirt.engine.core.bll.aaa;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.aaa.AuthenticationProfile;
import org.ovirt.engine.core.bll.CommandBase;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.utils.PermissionSubject;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
/**
* Tries to log out a user identified by its session id
*/
public class LogoutSessionCommand<T extends VdcActionParametersBase> extends CommandBase<T> {
@Inject
private SessionDataContainer sessionDataContainer;
public LogoutSessionCommand(T parameters, CommandContext commandContext) {
super(parameters, commandContext);
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ? AuditLogType.USER_VDC_LOGOUT : AuditLogType.USER_VDC_LOGOUT_FAILED;
}
@Override
protected boolean validate() {
return sessionDataContainer.isSessionExists(getParameters().getSessionId());
}
@Override
protected void executeCommand() {
AuthenticationProfile profile = sessionDataContainer.getProfile(getParameters().getSessionId());
if (profile == null) {
setSucceeded(false);
} else {
sessionDataContainer.setSessionValid(getParameters().getSessionId(), false);
setSucceeded(true);
}
}
@Override
protected boolean isUserAuthorizedToRunAction() {
return true;
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
// Not needed for admin operations.
return Collections.emptyList();
}
}