From 5c27c2bf3dc9a62cce1bed97d8a7f8d634a191aa Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 29 Oct 2014 11:17:45 -0500 Subject: [PATCH] IDEMPIERE-2275 Process button of toolbar doesn't handle access / based on patch from Nicolas Micoud (nmicoud) --- .../src/org/compiere/model/MInfoWindow.java | 4 ++-- .../web/server/command/ExecuteProcessCommand.java | 3 ++- .../src/org/adempiere/webui/adwindow/ADTabpanel.java | 8 ++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MInfoWindow.java b/org.adempiere.base/src/org/compiere/model/MInfoWindow.java index 3cb5124094..5ef35477cd 100644 --- a/org.adempiere.base/src/org/compiere/model/MInfoWindow.java +++ b/org.adempiere.base/src/org/compiere/model/MInfoWindow.java @@ -170,8 +170,8 @@ public class MInfoWindow extends X_AD_InfoWindow Iterator iterator = lsInfoProcess.iterator(); while (iterator.hasNext()){ MInfoProcess testInfoProcess = iterator.next(); - // need more review - if (MRole.getDefault().getProcessAccess(testInfoProcess.getAD_Process_ID()) == null){ + Boolean access = MRole.getDefault().getProcessAccess(testInfoProcess.getAD_Process_ID()); + if (access == null || !access.booleanValue()) { iterator.remove(); } } diff --git a/org.adempiere.server/src/main/servlet/org/adempiere/web/server/command/ExecuteProcessCommand.java b/org.adempiere.server/src/main/servlet/org/adempiere/web/server/command/ExecuteProcessCommand.java index f80cbeeda3..4263ae8988 100644 --- a/org.adempiere.server/src/main/servlet/org/adempiere/web/server/command/ExecuteProcessCommand.java +++ b/org.adempiere.server/src/main/servlet/org/adempiere/web/server/command/ExecuteProcessCommand.java @@ -57,7 +57,8 @@ public class ExecuteProcessCommand extends ServerResource { String procedureName = (String) entity.get("procedureName"); MRole role = MRole.get(context, Env.getAD_Role_ID(context), Env.getAD_User_ID(context), false); - if (!role.getProcessAccess(pi.getAD_Process_ID())) { + Boolean access = role.getProcessAccess(pi.getAD_Process_ID()); + if (access == null || !access.booleanValue()) { throw new AdempiereException("Access denied."); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index d58d8ab447..3f127b3629 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -62,6 +62,7 @@ import org.compiere.model.GridWindow; import org.compiere.model.I_AD_Preference; import org.compiere.model.MLookup; import org.compiere.model.MPreference; +import org.compiere.model.MRole; import org.compiere.model.MTab; import org.compiere.model.MTable; import org.compiere.model.MToolBarButton; @@ -632,8 +633,11 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer //get extra toolbar process buttons MToolBarButton[] mToolbarButtons = MToolBarButton.getProcessButtonOfTab(gridTab.getAD_Tab_ID(), null); for(MToolBarButton mToolbarButton : mToolbarButtons) { - ToolbarProcessButton toolbarProcessButton = new ToolbarProcessButton(mToolbarButton, this, windowPanel, windowNo); - toolbarProcessButtons.add(toolbarProcessButton); + Boolean access = MRole.getDefault().getProcessAccess(mToolbarButton.getAD_Process_ID()); + if (access != null && access.booleanValue()) { + ToolbarProcessButton toolbarProcessButton = new ToolbarProcessButton(mToolbarButton, this, windowPanel, windowNo); + toolbarProcessButtons.add(toolbarProcessButton); + } } if (toolbarProcessButtons.size() > 0) {