private void ChangePermission(GISADataset.TrusteeRow user, ListViewItem item, int colIndex) { GISADataset.TipoFunctionRow tipoFunction = (GISADataset.TipoFunctionRow)item.Tag; GISADataset.TipoOperationRow tipoOperation = (GISADataset.TipoOperationRow)(GisaDataSetHelper.GetInstance().TipoOperation.Select(string.Format("Name='{0}'", lstvwPermissoes.Columns[colIndex].Text))[0]); string query = "IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}"; query = string.Format(query, user.ID, tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID); GISADataset.TrusteePrivilegeRow[] trusteePrivileges = null; trusteePrivileges = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(query)); // alterar permissões no dataset if (trusteePrivileges.Length > 0) { if (trusteePrivileges[0].IsGrant) trusteePrivileges[0].IsGrant = false; else trusteePrivileges[0].Delete(); } else { trusteePrivileges = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(query, "", DataViewRowState.Deleted)); if (trusteePrivileges.Length > 0) { trusteePrivileges[0].RejectChanges(); trusteePrivileges[0].IsGrant = true; } else GisaDataSetHelper.GetInstance().TrusteePrivilege.AddTrusteePrivilegeRow(user, tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID, true, new byte[] { }, 0); } // popular as alterações GISADataset.FunctionOperationRow functionOperation = (GISADataset.FunctionOperationRow)(GisaDataSetHelper.GetInstance().FunctionOperation.Select(string.Format("IDTipoFunctionGroup={0} AND IdxTipoFunction={1} AND IDTipoOperation={2}", tipoFunction.IDTipoFunctionGroup, tipoFunction.idx, tipoOperation.ID))[0]); PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(CurrentTrusteeRow, functionOperation); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) item.SubItems[functionOperation.TipoOperationRow.ID].Text = "Sim"; else item.SubItems[functionOperation.TipoOperationRow.ID].Text = "Não"; GISADataset.TrusteePrivilegeRow[] tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", user.ID, functionOperation.IDTipoFunctionGroup, functionOperation.IdxTipoFunction, functionOperation.IDTipoOperation))); if (tpRows.Length == 0) { tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction = {2} AND IDTipoOperation = {3}", user.ID, functionOperation.IDTipoFunctionGroup, functionOperation.IdxTipoFunction, functionOperation.IDTipoOperation), "", DataViewRowState.Deleted)); if (tpRows.Length == 0) item.SubItems[colIndex].Font = PermissoesHelper.fontItalic; else item.SubItems[colIndex].Font = PermissoesHelper.fontBoldItalic; } else { if (tpRows[0].RowState == DataRowState.Modified && !(tpRows[0].IsGrant ^ (bool)(tpRows[0]["IsGrant", DataRowVersion.Original]))) item.SubItems[colIndex].Font = PermissoesHelper.fontRegular; else item.SubItems[colIndex].Font = PermissoesHelper.fontBold; } }
public static PermissoesHelper.PermissionType CalculateEffectivePermissions(GISADataset.TrusteeRow tRow, GISADataset.FunctionOperationRow foRow) { GISADataset.UserGroupsRow[] ugRows = null; GISADataset.TrusteePrivilegeRow[] tpuRows = null; tpuRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction={2} AND IDTipoOperation={3}", tRow.ID, foRow.IDTipoFunctionGroup, foRow.IdxTipoFunction, foRow.IDTipoOperation))); if (tpuRows.Length > 0) { if (tpuRows[0].IsGrant) { return(PermissionType.ExplicitGrant); } else { return(PermissionType.ExplicitDeny); } } if (tRow.CatCode.Equals("USR")) { if (tRow.GetTrusteeUserRows().Length > 0) { ugRows = tRow.GetTrusteeUserRows()[0].GetUserGroupsRows(); return(CalculateGroupPermissionsModulos(ugRows, foRow)); } } return(PermissionType.ImplicitDeny); }
public static PermissionType CalculateGroupPermissionsModulos(GISADataset.UserGroupsRow[] ugRows, GISADataset.FunctionOperationRow foRow) { string QueryGroup = string.Empty; DataRow[] pgRows = null; PermissionType GroupPermission = PermissionType.ImplicitDeny; if (ugRows == null) { return(GroupPermission); } foreach (GISADataset.UserGroupsRow ugRow in ugRows) { QueryGroup = "IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction={2} AND IDTipoOperation={3}"; QueryGroup = string.Format(QueryGroup, ugRow.TrusteeGroupRow.TrusteeRow.ID, foRow.IDTipoFunctionGroup, foRow.IdxTipoFunction, foRow.IDTipoOperation); pgRows = GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(QueryGroup); GroupPermission = CalculateGroupPermissions(GroupPermission, pgRows); } return(GroupPermission); }