IDEMPIERE-5888 Login Preferences are created on System tenant (#2140)
- Fix an issue causing that SuperUser (or users with several tenants) are not saving correctly preferences
This commit is contained in:
parent
4358d228e6
commit
bbb5aa8562
|
@ -493,11 +493,15 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
||||||
{
|
{
|
||||||
lstRole.getItems().clear();
|
lstRole.getItems().clear();
|
||||||
lstRole.setText("");
|
lstRole.setText("");
|
||||||
|
setUserID();
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
Comboitem lstItemClient = lstClient.getSelectedItem();
|
Comboitem lstItemClient = lstClient.getSelectedItem();
|
||||||
if (lstItemClient != null)
|
if (lstItemClient != null)
|
||||||
{
|
{
|
||||||
|
if (lstClient.getChildren().size() > 1) // load the preference was postponed until client selected
|
||||||
|
userPreference.loadPreference(Env.getContextAsInt(m_ctx, Env.AD_USER_ID));
|
||||||
|
|
||||||
// initial role
|
// initial role
|
||||||
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
|
||||||
String initDefault = userPreference.getProperty(UserPreference.P_ROLE);
|
String initDefault = userPreference.getProperty(UserPreference.P_ROLE);
|
||||||
if( initDefault.length() == 0 && !m_showRolePanel && m_userpreference != null )
|
if( initDefault.length() == 0 && !m_showRolePanel && m_userpreference != null )
|
||||||
{
|
{
|
||||||
|
@ -536,9 +540,28 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
||||||
lstRole.setEnabled(true);
|
lstRole.setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setUserID();
|
|
||||||
updateOrganisationList();
|
updateOrganisationList();
|
||||||
updateLanguage();
|
updateLanguage();
|
||||||
|
if (lstClient.getChildren().size() > 1) {
|
||||||
|
userPreference.loadPreference(Env.getContextAsInt(m_ctx, Env.AD_USER_ID));
|
||||||
|
// saving the preferences was postponed until the user selects the client
|
||||||
|
Comboitem lstItemRole = lstRole.getSelectedItem();
|
||||||
|
Comboitem lstItemOrg = lstOrganisation.getSelectedItem();
|
||||||
|
Comboitem lstItemWarehouse = lstWarehouse.getSelectedItem();
|
||||||
|
Comboitem lstItemLanguage = lstLanguage.getSelectedItem();
|
||||||
|
if (lstItemLanguage != null && lstItemLanguage.getValue() != null)
|
||||||
|
userPreference.setProperty(UserPreference.P_LANGUAGE, (String) lstItemLanguage.getValue());
|
||||||
|
else
|
||||||
|
userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(m_ctx, UserPreference.LANGUAGE_NAME));
|
||||||
|
if (lstItemRole != null && lstItemRole.getValue() != null)
|
||||||
|
userPreference.setProperty(UserPreference.P_ROLE, (String) lstItemRole.getValue());
|
||||||
|
userPreference.setProperty(UserPreference.P_CLIENT, (String) lstItemClient.getValue());
|
||||||
|
if (lstItemOrg != null && lstItemOrg.getValue() != null)
|
||||||
|
userPreference.setProperty(UserPreference.P_ORG, (String) lstItemOrg.getValue());
|
||||||
|
if (lstItemWarehouse != null && lstItemWarehouse.getValue() != null)
|
||||||
|
userPreference.setProperty(UserPreference.P_WAREHOUSE, (String) lstItemWarehouse.getValue());
|
||||||
|
userPreference.savePreference();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateLanguage()
|
private void updateLanguage()
|
||||||
|
@ -692,7 +715,6 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
||||||
lstWarehouse.setSelectedItem(ci);
|
lstWarehouse.setSelectedItem(ci);
|
||||||
}
|
}
|
||||||
if (lstWarehouse.getSelectedIndex() == -1 && lstWarehouse.getItemCount() > 0) {
|
if (lstWarehouse.getSelectedIndex() == -1 && lstWarehouse.getItemCount() > 0) {
|
||||||
m_showRolePanel = true; // didn't find default warehouse
|
|
||||||
lstWarehouse.setSelectedIndex(0);
|
lstWarehouse.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,7 +890,7 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
|
||||||
if (lstItemLanguage != null && lstItemLanguage.getValue() != null)
|
if (lstItemLanguage != null && lstItemLanguage.getValue() != null)
|
||||||
userPreference.setProperty(UserPreference.P_LANGUAGE, (String) lstItemLanguage.getValue());
|
userPreference.setProperty(UserPreference.P_LANGUAGE, (String) lstItemLanguage.getValue());
|
||||||
else
|
else
|
||||||
userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(m_ctx, UserPreference.LANGUAGE_NAME));
|
userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(m_ctx, UserPreference.LANGUAGE_NAME));
|
||||||
userPreference.setProperty(UserPreference.P_ROLE, (String) lstItemRole.getValue());
|
userPreference.setProperty(UserPreference.P_ROLE, (String) lstItemRole.getValue());
|
||||||
userPreference.setProperty(UserPreference.P_CLIENT, (String) lstItemClient.getValue());
|
userPreference.setProperty(UserPreference.P_CLIENT, (String) lstItemClient.getValue());
|
||||||
userPreference.setProperty(UserPreference.P_ORG, (String) lstItemOrg.getValue());
|
userPreference.setProperty(UserPreference.P_ORG, (String) lstItemOrg.getValue());
|
||||||
|
|
|
@ -124,13 +124,15 @@ public final class UserPreference implements Serializable {
|
||||||
preference.setAD_User_ID(m_AD_User_ID);
|
preference.setAD_User_ID(m_AD_User_ID);
|
||||||
preference.setAttribute(attribute);
|
preference.setAttribute(attribute);
|
||||||
}
|
}
|
||||||
|
String oldValue = preference.getValue();
|
||||||
try {
|
if (! oldValue.equals(value)) {
|
||||||
PO.setCrossTenantSafe();
|
try {
|
||||||
preference.setValue(value);
|
PO.setCrossTenantSafe();
|
||||||
preference.saveEx();
|
preference.setValue(value);
|
||||||
} finally {
|
preference.saveEx();
|
||||||
PO.clearCrossTenantSafe();
|
} finally {
|
||||||
|
PO.clearCrossTenantSafe();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue