IDEMPIERE-1042 Role Data Access – Table Access Exporting.
This commit is contained in:
parent
9f298bcad5
commit
1d5b87afbf
|
@ -0,0 +1,24 @@
|
||||||
|
-- Jun 20, 2013 11:45:39 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2013-06-20 11:45:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8320
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:45:50 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2013-06-20 11:45:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8321
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:46:19 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Column SET IsActive='N',Updated=TO_DATE('2013-06-20 11:46:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9970
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:46:39 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Column SET IsActive='N',Updated=TO_DATE('2013-06-20 11:46:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9971
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT register_migration_script('201306200400_IDEMPIERE-1042.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- Jun 20, 2013 11:45:39 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Field SET IsActive='N',Updated=TO_TIMESTAMP('2013-06-20 11:45:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8320
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:45:50 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Field SET IsActive='N',Updated=TO_TIMESTAMP('2013-06-20 11:45:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8321
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:46:19 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Column SET IsActive='N',Updated=TO_TIMESTAMP('2013-06-20 11:46:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9970
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jun 20, 2013 11:46:39 AM MYT
|
||||||
|
-- IDEMPIERE-1042 Role Data Access
|
||||||
|
UPDATE AD_Column SET IsActive='N',Updated=TO_TIMESTAMP('2013-06-20 11:46:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9971
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201306200400_IDEMPIERE-1042.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -143,32 +143,6 @@ public interface I_AD_Table_Access
|
||||||
*/
|
*/
|
||||||
public boolean isActive();
|
public boolean isActive();
|
||||||
|
|
||||||
/** Column name IsCanExport */
|
|
||||||
public static final String COLUMNNAME_IsCanExport = "IsCanExport";
|
|
||||||
|
|
||||||
/** Set Can Export.
|
|
||||||
* Users with this role can export data
|
|
||||||
*/
|
|
||||||
public void setIsCanExport (boolean IsCanExport);
|
|
||||||
|
|
||||||
/** Get Can Export.
|
|
||||||
* Users with this role can export data
|
|
||||||
*/
|
|
||||||
public boolean isCanExport();
|
|
||||||
|
|
||||||
/** Column name IsCanReport */
|
|
||||||
public static final String COLUMNNAME_IsCanReport = "IsCanReport";
|
|
||||||
|
|
||||||
/** Set Can Report.
|
|
||||||
* Users with this role can create reports
|
|
||||||
*/
|
|
||||||
public void setIsCanReport (boolean IsCanReport);
|
|
||||||
|
|
||||||
/** Get Can Report.
|
|
||||||
* Users with this role can create reports
|
|
||||||
*/
|
|
||||||
public boolean isCanReport();
|
|
||||||
|
|
||||||
/** Column name IsExclude */
|
/** Column name IsExclude */
|
||||||
public static final String COLUMNNAME_IsExclude = "IsExclude";
|
public static final String COLUMNNAME_IsExclude = "IsExclude";
|
||||||
|
|
||||||
|
|
|
@ -1196,8 +1196,9 @@ public final class MRole extends X_AD_Role
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isTableAccess(AD_Table_ID, true)) // No R/O Access to Table
|
if (!isTableAccess(AD_Table_ID, true)) // No R/O Access to Table
|
||||||
return false;
|
return false;
|
||||||
//
|
|
||||||
|
//default to negative list, can report on all tables
|
||||||
boolean canReport = true;
|
boolean canReport = true;
|
||||||
for (int i = 0; i < m_tableAccess.length; i++)
|
for (int i = 0; i < m_tableAccess.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -1207,19 +1208,18 @@ public final class MRole extends X_AD_Role
|
||||||
{
|
{
|
||||||
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
||||||
{
|
{
|
||||||
canReport = m_tableAccess[i].isCanReport();
|
if (log.isLoggable(Level.FINE)) log.fine("Exclude " + AD_Table_ID);
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Exclude " + AD_Table_ID + " - " + canReport);
|
return false;
|
||||||
return canReport;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // Include
|
else // Include
|
||||||
{
|
{
|
||||||
|
//positive list, can report ONLY on included tables
|
||||||
canReport = false;
|
canReport = false;
|
||||||
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
||||||
{
|
{
|
||||||
canReport = m_tableAccess[i].isCanReport();
|
if (log.isLoggable(Level.FINE)) log.fine("Include " + AD_Table_ID);
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Include " + AD_Table_ID + " - " + canReport);
|
return true;
|
||||||
return canReport;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // for all Table Access
|
} // for all Table Access
|
||||||
|
@ -1243,7 +1243,8 @@ public final class MRole extends X_AD_Role
|
||||||
return false;
|
return false;
|
||||||
if (!isCanReport (AD_Table_ID)) // We cannot Export if we cannot report
|
if (!isCanReport (AD_Table_ID)) // We cannot Export if we cannot report
|
||||||
return false;
|
return false;
|
||||||
//
|
|
||||||
|
//default to negative list, can report on all tables
|
||||||
boolean canExport = true;
|
boolean canExport = true;
|
||||||
for (int i = 0; i < m_tableAccess.length; i++)
|
for (int i = 0; i < m_tableAccess.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -1251,16 +1252,21 @@ public final class MRole extends X_AD_Role
|
||||||
continue;
|
continue;
|
||||||
if (m_tableAccess[i].isExclude()) // Exclude
|
if (m_tableAccess[i].isExclude()) // Exclude
|
||||||
{
|
{
|
||||||
canExport = m_tableAccess[i].isCanExport();
|
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Exclude " + AD_Table_ID + " - " + canExport);
|
{
|
||||||
return canExport;
|
if (log.isLoggable(Level.FINE)) log.fine("Exclude " + AD_Table_ID);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else // Include
|
else // Include
|
||||||
{
|
{
|
||||||
canExport = false;
|
//positive list, can export ONLY on included tables
|
||||||
canExport = m_tableAccess[i].isCanExport();
|
canExport = false;
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("Include " + AD_Table_ID + " - " + canExport);
|
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
||||||
return canExport;
|
{
|
||||||
|
if (log.isLoggable(Level.FINE)) log.fine("Include " + AD_Table_ID);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} // for all Table Access
|
} // for all Table Access
|
||||||
if (log.isLoggable(Level.FINE)) log.fine(AD_Table_ID + " - " + canExport);
|
if (log.isLoggable(Level.FINE)) log.fine(AD_Table_ID + " - " + canExport);
|
||||||
|
@ -1278,7 +1284,8 @@ public final class MRole extends X_AD_Role
|
||||||
if (!isTableAccessLevel (AD_Table_ID, ro)) // Role Based Access
|
if (!isTableAccessLevel (AD_Table_ID, ro)) // Role Based Access
|
||||||
return false;
|
return false;
|
||||||
loadTableAccess(false);
|
loadTableAccess(false);
|
||||||
//
|
|
||||||
|
//default to negative list, can access on all tables
|
||||||
boolean hasAccess = true; // assuming exclusive rule
|
boolean hasAccess = true; // assuming exclusive rule
|
||||||
for (int i = 0; i < m_tableAccess.length; i++)
|
for (int i = 0; i < m_tableAccess.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -1302,7 +1309,8 @@ public final class MRole extends X_AD_Role
|
||||||
else // Include
|
else // Include
|
||||||
// If you Include Access to a table and select Read Only,
|
// If you Include Access to a table and select Read Only,
|
||||||
// you can only read data (otherwise full access).
|
// you can only read data (otherwise full access).
|
||||||
{
|
{
|
||||||
|
//positive list, can access ONLY on included tables
|
||||||
hasAccess = false;
|
hasAccess = false;
|
||||||
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
if (m_tableAccess[i].getAD_Table_ID() == AD_Table_ID)
|
||||||
{
|
{
|
||||||
|
@ -2846,12 +2854,6 @@ public final class MRole extends X_AD_Role
|
||||||
if (found && override)
|
if (found && override)
|
||||||
{
|
{
|
||||||
// stronger permissions first
|
// stronger permissions first
|
||||||
if (ta2.isCanReport())
|
|
||||||
ta1.setIsCanExport(true);
|
|
||||||
if (ta2.isCanReport())
|
|
||||||
ta1.setIsCanReport(true);
|
|
||||||
if (!ta2.isReadOnly())
|
|
||||||
ta1.setIsCanExport(false);
|
|
||||||
if (!ta2.isExclude())
|
if (!ta2.isExclude())
|
||||||
ta1.setIsExclude(false);
|
ta1.setIsExclude(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,9 +75,9 @@ public class MTableAccess extends X_AD_Table_Access
|
||||||
if (ACCESSTYPERULE_Accessing.equals(getAccessTypeRule()))
|
if (ACCESSTYPERULE_Accessing.equals(getAccessTypeRule()))
|
||||||
sb.append("-ReadOnly=").append(isReadOnly());
|
sb.append("-ReadOnly=").append(isReadOnly());
|
||||||
else if (ACCESSTYPERULE_Exporting.equals(getAccessTypeRule()))
|
else if (ACCESSTYPERULE_Exporting.equals(getAccessTypeRule()))
|
||||||
sb.append("-CanExport=").append(isCanExport());
|
sb.append("-CanExport=").append(!isExclude());
|
||||||
else if (ACCESSTYPERULE_Reporting.equals(getAccessTypeRule()))
|
else if (ACCESSTYPERULE_Reporting.equals(getAccessTypeRule()))
|
||||||
sb.append("-CanReport=").append(isCanReport());
|
sb.append("-CanReport=").append(!isExclude());
|
||||||
sb.append("]");
|
sb.append("]");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
} // toString
|
} // toString
|
||||||
|
@ -97,9 +97,9 @@ public class MTableAccess extends X_AD_Table_Access
|
||||||
if (ACCESSTYPERULE_Accessing.equals(getAccessTypeRule()))
|
if (ACCESSTYPERULE_Accessing.equals(getAccessTypeRule()))
|
||||||
sb.append(" - ").append(Msg.translate(ctx, "IsReadOnly")).append("=").append(isReadOnly());
|
sb.append(" - ").append(Msg.translate(ctx, "IsReadOnly")).append("=").append(isReadOnly());
|
||||||
else if (ACCESSTYPERULE_Exporting.equals(getAccessTypeRule()))
|
else if (ACCESSTYPERULE_Exporting.equals(getAccessTypeRule()))
|
||||||
sb.append(" - ").append(Msg.translate(ctx, "IsCanExport")).append("=").append(isCanExport());
|
sb.append(" - ").append(Msg.translate(ctx, "CanExport")).append("=").append(!isExclude());
|
||||||
else if (ACCESSTYPERULE_Reporting.equals(getAccessTypeRule()))
|
else if (ACCESSTYPERULE_Reporting.equals(getAccessTypeRule()))
|
||||||
sb.append(" - ").append(Msg.translate(ctx, "IsCanReport")).append("=").append(isCanReport());
|
sb.append(" - ").append(Msg.translate(ctx, "CanReport")).append("=").append(!isExclude());
|
||||||
sb.append(" - ").append(isExclude() ? ex : in);
|
sb.append(" - ").append(isExclude() ? ex : in);
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
} // toStringX
|
} // toStringX
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class X_AD_Table_Access extends PO implements I_AD_Table_Access, I_Persis
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20130425L;
|
private static final long serialVersionUID = 20130620L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_AD_Table_Access (Properties ctx, int AD_Table_Access_ID, String trxName)
|
public X_AD_Table_Access (Properties ctx, int AD_Table_Access_ID, String trxName)
|
||||||
|
@ -42,8 +42,6 @@ public class X_AD_Table_Access extends PO implements I_AD_Table_Access, I_Persis
|
||||||
// A
|
// A
|
||||||
setAD_Role_ID (0);
|
setAD_Role_ID (0);
|
||||||
setAD_Table_ID (0);
|
setAD_Table_ID (0);
|
||||||
setIsCanExport (false);
|
|
||||||
setIsCanReport (false);
|
|
||||||
setIsExclude (true);
|
setIsExclude (true);
|
||||||
// Y
|
// Y
|
||||||
setIsReadOnly (false);
|
setIsReadOnly (false);
|
||||||
|
@ -182,54 +180,6 @@ public class X_AD_Table_Access extends PO implements I_AD_Table_Access, I_Persis
|
||||||
return new KeyNamePair(get_ID(), String.valueOf(getAD_Table_ID()));
|
return new KeyNamePair(get_ID(), String.valueOf(getAD_Table_ID()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set Can Export.
|
|
||||||
@param IsCanExport
|
|
||||||
Users with this role can export data
|
|
||||||
*/
|
|
||||||
public void setIsCanExport (boolean IsCanExport)
|
|
||||||
{
|
|
||||||
set_Value (COLUMNNAME_IsCanExport, Boolean.valueOf(IsCanExport));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Can Export.
|
|
||||||
@return Users with this role can export data
|
|
||||||
*/
|
|
||||||
public boolean isCanExport ()
|
|
||||||
{
|
|
||||||
Object oo = get_Value(COLUMNNAME_IsCanExport);
|
|
||||||
if (oo != null)
|
|
||||||
{
|
|
||||||
if (oo instanceof Boolean)
|
|
||||||
return ((Boolean)oo).booleanValue();
|
|
||||||
return "Y".equals(oo);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Can Report.
|
|
||||||
@param IsCanReport
|
|
||||||
Users with this role can create reports
|
|
||||||
*/
|
|
||||||
public void setIsCanReport (boolean IsCanReport)
|
|
||||||
{
|
|
||||||
set_Value (COLUMNNAME_IsCanReport, Boolean.valueOf(IsCanReport));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Can Report.
|
|
||||||
@return Users with this role can create reports
|
|
||||||
*/
|
|
||||||
public boolean isCanReport ()
|
|
||||||
{
|
|
||||||
Object oo = get_Value(COLUMNNAME_IsCanReport);
|
|
||||||
if (oo != null)
|
|
||||||
{
|
|
||||||
if (oo instanceof Boolean)
|
|
||||||
return ((Boolean)oo).booleanValue();
|
|
||||||
return "Y".equals(oo);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Exclude.
|
/** Set Exclude.
|
||||||
@param IsExclude
|
@param IsExclude
|
||||||
Exclude access to the data - if not selected Include access to the data
|
Exclude access to the data - if not selected Include access to the data
|
||||||
|
|
|
@ -2371,8 +2371,15 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExport() {
|
public void onExport() {
|
||||||
ExportAction action = new ExportAction(this);
|
int AD_Table_ID=getActiveGridTab().getAD_Table_ID();
|
||||||
action.export();
|
final boolean isCanExport=MRole.getDefault().isCanExport(AD_Table_ID);
|
||||||
|
if (!isCanExport) {
|
||||||
|
FDialog.error(curWindowNo, parent, "AccessCannotExport");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
ExportAction action = new ExportAction(this);
|
||||||
|
action.export();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -94,7 +94,8 @@ public class ReportAction implements EventListener<Event>
|
||||||
|
|
||||||
public void show()
|
public void show()
|
||||||
{
|
{
|
||||||
final boolean isCanExport=MRole.getDefault().isCanExport();
|
int AD_Table_ID=panel.getActiveGridTab().getAD_Table_ID();
|
||||||
|
final boolean isCanExport=MRole.getDefault().isCanExport(AD_Table_ID);
|
||||||
if(winReport == null)
|
if(winReport == null)
|
||||||
{
|
{
|
||||||
winReport = new Window();
|
winReport = new Window();
|
||||||
|
|
Loading…
Reference in New Issue