package org.ovirt.engine.core.bll.aaa;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
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.TerminateSessionsForTokenParameters;
import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
/**
* Terminates session of the user identified by its session database id. Only admins can execute this command.
*/
public class TerminateSessionsForTokenCommand<T extends TerminateSessionsForTokenParameters> extends CommandBase<T> {
@Inject
private SessionDataContainer sessionDataContainer;
public TerminateSessionsForTokenCommand(T parameters, CommandContext commandContext) {
super(parameters, commandContext);
}
@Override
protected boolean validate() {
return true;
}
@Override
protected void executeCommand() {
DbUser terminatedUser = sessionDataContainer.getUser(
sessionDataContainer.getSessionIdBySsoAccessToken(getParameters().getSsoAccessToken()),
false);
if (terminatedUser != null) {
log.debug("Terminating session for user {}@{}", terminatedUser.getLoginName(), terminatedUser.getDomain());
}
sessionDataContainer.cleanupEngineSessionsForSsoAccessToken(getParameters().getSsoAccessToken());
setSucceeded(true);
}
@Override
protected boolean isUserAuthorizedToRunAction() {
return true;
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
return Collections.emptyList();
}
@Override
public AuditLogType getAuditLogTypeValue() {
return AuditLogType.UNASSIGNED;
}
}