Role Based Security
We login in the system with a particular role. Now to fetch data according to login role access, framework provides below function. Developer can use this function according to requirement after select query.
On Server Side
Function Name | Description |
MRole.GetDefault(ctx).AddAccessSQL(string sql, string tableName, Bool isFullyQuilified, Bool isRO);
| Parameter Ist parameter (String sql): Pass SQL query
2nd parameter (String tableName): Pass table name on which check role accessibility
3rd parameter (Bool): Pass bool value (MRole.SQL_FULLYQUALIFIED), It makes column AD_Client_ID and AD_Org_ID fully qualified by append passed tableName in 2nd parameter
4th parameter(Bool): Pass Bool Value (MRole.SQL_RO or MRole.SQL_RW)
If pass MRole.SQL_RO, It fetches System level record and login client level records. For example It appends WHERE Clause in SQL query like (SQL: WHERE AD_Client_ID IN (0, LoginClientID) AND AD_Org_ID IN (0,orgID1, orgID2,..)).
If pass MRole.SQL_RW It fetches only login client level records. For example It appends WHERE Clause in SQL query like (SQL: WHERE AD_Client_ID IN (LoginClientID)). Further function appends organization according to current role access. |
For example
string sql=”SELECT * FROM C_Order”;
sql = MRole.GetDefault(ctx).AddAccessSQL(sql, “C_Order”,MRole.SQL_FULLYQUALIFIED,
MRole.SQL_RO);
Suppose login client id is 11 and organization id is 121 then Sql query become like
Sql: “SELECT * FROM C_Order WHERE C_Order.AD_Client_ID IN (0,11) AND C_Order.AD_Org_ID IN(0,121)”