IDEMPIERE-1291 Login possible if model validator is missing

This commit is contained in:
Carlos Ruiz 2013-08-28 10:23:30 -05:00
parent 6e10cd8e6d
commit 24727ecc7a
1 changed files with 27 additions and 8 deletions

View File

@ -26,6 +26,7 @@ package org.adempiere.webui.panel;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Properties; import java.util.Properties;
import org.adempiere.util.Callback;
import org.adempiere.webui.AdempiereIdGenerator; import org.adempiere.webui.AdempiereIdGenerator;
import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.ComboItem; import org.adempiere.webui.component.ComboItem;
@ -38,6 +39,7 @@ import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.theme.ITheme; import org.adempiere.webui.theme.ITheme;
import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.theme.ThemeManager;
import org.adempiere.webui.util.UserPreference; import org.adempiere.webui.util.UserPreference;
import org.adempiere.webui.window.FDialog;
import org.adempiere.webui.window.LoginWindow; import org.adempiere.webui.window.LoginWindow;
import org.compiere.model.MRole; import org.compiere.model.MRole;
import org.compiere.model.MSysConfig; import org.compiere.model.MSysConfig;
@ -47,6 +49,7 @@ import org.compiere.util.KeyNamePair;
import org.compiere.util.Language; import org.compiere.util.Language;
import org.compiere.util.Login; import org.compiere.util.Login;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Util;
import org.zkoss.zhtml.Table; import org.zkoss.zhtml.Table;
import org.zkoss.zhtml.Td; import org.zkoss.zhtml.Td;
import org.zkoss.zhtml.Tr; import org.zkoss.zhtml.Tr;
@ -97,7 +100,11 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
protected boolean m_show = true; protected boolean m_show = true;
public RolePanel(Properties ctx, LoginWindow loginWindow, String userName, boolean show, KeyNamePair[] clientsKNPairs) { private RolePanel component;
private static final String ON_DEFER_LOGOUT = "onDeferLogout";
public RolePanel(Properties ctx, LoginWindow loginWindow, String userName, boolean show, KeyNamePair[] clientsKNPairs) {
this.wndLogin = loginWindow; this.wndLogin = loginWindow;
m_ctx = ctx; m_ctx = ctx;
m_userName = userName; m_userName = userName;
@ -349,6 +356,9 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
} }
setUserID(); setUserID();
updateRoleList(); updateRoleList();
this.component = this;
component.addEventListener(ON_DEFER_LOGOUT, this);
} }
private void updateRoleList() private void updateRoleList()
@ -505,6 +515,11 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
SessionManager.logoutSession(); SessionManager.logoutSession();
wndLogin.loginCancelled(); wndLogin.loginCancelled();
} }
else if (ON_DEFER_LOGOUT.equals(event.getName()))
{
SessionManager.logoutSession();
wndLogin.loginCancelled();
}
} }
private void setUserID() { private void setUserID() {
@ -572,16 +587,20 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
Timestamp date = (Timestamp)lstDate.getValue(); Timestamp date = (Timestamp)lstDate.getValue();
String msg = login.loadPreferences(orgKNPair, warehouseKNPair, date, null); String msg = login.loadPreferences(orgKNPair, warehouseKNPair, date, null);
if (Util.isEmpty(msg))
if(!(msg == null || msg.length() == 0))
{ {
throw new WrongValueException(msg); msg = login.validateLogin(orgKNPair);
} }
if (! Util.isEmpty(msg))
msg = login.validateLogin(orgKNPair);
if (msg != null && msg.length() > 0)
{ {
throw new WrongValueException(msg); Env.getCtx().clear();
FDialog.error(0, this, "Error", msg, new Callback<Integer>() {
@Override
public void onCallback(Integer result) {
Events.echoEvent(new Event(ON_DEFER_LOGOUT, component));
}
});
return;
} }
wndLogin.loginCompleted(); wndLogin.loginCompleted();