Esempio n. 1
0
        public static IEnumerable <DataRow> GetMenuStatusList(
            DbConnection sqlConnection, QPModelDataContext efContext, int userId, bool isAdmin,
            string menuCode, int entityId)
        {
            var    useSecurity  = !isAdmin;
            var    databaseType = DatabaseTypeHelper.ResolveDatabaseType(sqlConnection);
            var    menuId       = efContext.ContextMenuSet.First(x => x.Code == menuCode).Id;
            string query;

            if (!useSecurity)
            {
                query = $@"
                    SELECT ba.CODE, {SqlQuerySyntaxHelper.ToBoolSql(databaseType, true)} as visible
		            FROM CONTEXT_MENU_ITEM cmi
		            INNER JOIN BACKEND_ACTION ba on ba.ID = cmi.ACTION_ID
		            WHERE cmi.context_menu_id = {menuId}
                ";
            }
            else
            {
                var level    = GetEntityAccessLevel(sqlConnection, efContext, userId, 0, menuCode, entityId);
                var secQuery = PermissionHelper.GetActionPermissionsAsQuery(efContext, userId);
                var least    = SqlQuerySyntaxHelper.Least(databaseType, "SEC.PERMISSION_LEVEL", level.ToString());
                query = $@"
                    SELECT ba.CODE,
					CAST((
                        CASE WHEN {least} >= PL.PERMISSION_LEVEL THEN 1 ELSE 0
                    END ) AS BIT) as visible
		            FROM CONTEXT_MENU_ITEM cmi
		            INNER JOIN BACKEND_ACTION ba on ba.ID = cmi.ACTION_ID
		            INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID
					INNER JOIN PERMISSION_LEVEL PL ON PL.PERMISSION_LEVEL_ID = AT.REQUIRED_PERMISSION_LEVEL_ID
					INNER JOIN ({secQuery}) SEC ON SEC.BACKEND_ACTION_ID = ba.ID
		            WHERE cmi.context_menu_id = {menuId}
                ";
            }

            return(Common.GetDataTableForQuery(sqlConnection, query));
        }
Esempio n. 2
0
        public static IEnumerable <DataRow> GetActionStatusList(QPModelDataContext efContext, DbConnection sqlConnection, int userId, string actionCode, int?actionId, int entityId, string entityCode, bool isAdmin)
        {
            var    useSecurity  = !isAdmin;
            var    databaseType = DatabaseTypeHelper.ResolveDatabaseType(sqlConnection);
            string query;

            if (!useSecurity)
            {
                query = $@"
                    SELECT ba.CODE, {SqlQuerySyntaxHelper.ToBoolSql(databaseType, true)} as visible
		            FROM ACTION_TOOLBAR_BUTTON atb
		            INNER JOIN BACKEND_ACTION ba on ba.ID = atb.ACTION_ID
		            INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID
		            WHERE atb.PARENT_ACTION_ID = {actionId} AND at.items_affected = 1
                ";
            }
            else
            {
                var level    = GetEntityAccessLevel(sqlConnection, efContext, userId, 0, entityCode, entityId);
                var least    = SqlQuerySyntaxHelper.Least(databaseType, "SEC.PERMISSION_LEVEL", level.ToString());
                var secQuery = PermissionHelper.GetActionPermissionsAsQuery(efContext, userId);
                query = $@"
                    SELECT ba.CODE,
					CAST((
                        CASE WHEN {least} >= PL.PERMISSION_LEVEL THEN 1 ELSE 0
                    END ) AS BIT) as visible
		            FROM ACTION_TOOLBAR_BUTTON atb
		            INNER JOIN BACKEND_ACTION ba on ba.ID = atb.ACTION_ID
		            INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID
					INNER JOIN PERMISSION_LEVEL PL ON PL.PERMISSION_LEVEL_ID = AT.REQUIRED_PERMISSION_LEVEL_ID
					INNER JOIN ({secQuery}) SEC ON SEC.BACKEND_ACTION_ID = ba.ID
		            WHERE atb.PARENT_ACTION_ID = {actionId} AND at.items_affected = 1
                ";
            }

            return(Common.GetDataTableForQuery(sqlConnection, query));
        }