IDEMPIERE-4213 Window Toolbar attached processes are doesn't validate role access (#265)
This commit is contained in:
parent
c5079d5106
commit
1ddbe3eef5
|
@ -505,6 +505,13 @@ public class GridField
|
||||||
return false;
|
return false;
|
||||||
if (!MRole.getDefault(ctx, false).isColumnAccess(AD_Table_ID, m_vo.AD_Column_ID, false))
|
if (!MRole.getDefault(ctx, false).isColumnAccess(AD_Table_ID, m_vo.AD_Column_ID, false))
|
||||||
return false;
|
return false;
|
||||||
|
if (getDisplayType() == DisplayType.Button && getAD_Process_ID() > 0) {
|
||||||
|
// Verify access to process for buttons
|
||||||
|
Boolean access = MRole.getDefault().getProcessAccess(getAD_Process_ID());
|
||||||
|
if (access == null || !access.booleanValue())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ import java.util.logging.Level;
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.DisplayType;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Ini;
|
import org.compiere.util.Ini;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
|
@ -1463,7 +1464,15 @@ public final class MRole extends X_AD_Role implements ImmutablePOSupport
|
||||||
if (!isTableAccess(AD_Table_ID, ro)) // No Access to Table
|
if (!isTableAccess(AD_Table_ID, ro)) // No Access to Table
|
||||||
return false;
|
return false;
|
||||||
loadColumnAccess(false);
|
loadColumnAccess(false);
|
||||||
|
|
||||||
|
// Verify access to process for buttons
|
||||||
|
MColumn column = MColumn.get(Env.getCtx(), AD_Column_ID);
|
||||||
|
if (column.getAD_Reference_ID() == DisplayType.Button && column.getAD_Process_ID() > 0) {
|
||||||
|
Boolean access = MRole.getDefault().getProcessAccess(column.getAD_Process_ID());
|
||||||
|
if (access == null)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean retValue = true; // assuming exclusive
|
boolean retValue = true; // assuming exclusive
|
||||||
for (int i = 0; i < m_columnAccess.length; i++)
|
for (int i = 0; i < m_columnAccess.length; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue