package org.ovirt.engine.core.bll; import org.ovirt.engine.core.bll.adbroker.AdActionType; import org.ovirt.engine.core.bll.adbroker.BrokerUtils; import org.ovirt.engine.core.bll.adbroker.LdapBroker; import org.ovirt.engine.core.bll.adbroker.LdapFactory; import org.ovirt.engine.core.bll.adbroker.LdapReturnValueBase; import org.ovirt.engine.core.bll.adbroker.LdapUserPasswordBaseParameters; import org.ovirt.engine.core.bll.adbroker.UserAuthenticationResult; import org.ovirt.engine.core.common.action.LoginUserParameters; import org.ovirt.engine.core.compat.LogCompat; import org.ovirt.engine.core.compat.LogFactoryCompat; import org.ovirt.engine.core.compat.RefObject; import org.ovirt.engine.core.dal.VdcBllMessages; public class LoginUserCommand<T extends LoginUserParameters> extends LoginBaseCommand<T> { public LoginUserCommand(T parameters) { super(parameters); } @Override protected UserAuthenticationResult AuthenticateUser(RefObject<Boolean> isLocalBackend, RefObject<Boolean> isAdmin) { isLocalBackend.argvalue = false; isAdmin.argvalue = false; // We are using the getLoginDomain method in order to get the real domain, in case of logging in with a UPN // as in that case the domain we get is what chosen by the client, but the real domain is the one determined by the UPN String loginDomain = BrokerUtils.getLoginDomain(getParameters().getUserName(), getDomain()); LdapBroker adFactory = LdapFactory.getInstance(loginDomain); if (adFactory == null) { log.error("No LdapBrokerImpl can be retrieved."); return new UserAuthenticationResult(VdcBllMessages.USER_FAILED_TO_AUTHENTICATION_WRONG_AUTHENTICATION_METHOD); } LdapReturnValueBase adReturnValue = adFactory.RunAdAction(AdActionType.AuthenticateUser, new LdapUserPasswordBaseParameters(loginDomain, getParameters().getUserName(), getUserPassword())); UserAuthenticationResult authResult = (UserAuthenticationResult)adReturnValue.getReturnValue(); return authResult; } private static LogCompat log = LogFactoryCompat.getLog(LoginUserCommand.class); }