// selecionar um grupo/utilizador private void button1_Click(object sender, EventArgs e) { FormPickUser frm = new FormPickUser(); if (frm.ShowDialog() == DialogResult.OK) { currentUser = frm.tRow; txtSelectedUser.Text = currentUser.Name; UpdateContext(); } }
public override void LoadData() { if (CurrentContext.PermissoesNivel == null || CurrentContext.PermissoesTrustee == null) { currentNivel = null; currentUser = null; return; } currentNivel = CurrentContext.PermissoesNivel; currentUser = CurrentContext.PermissoesTrustee; PermissoesNivelList1.CurrentTrusteeRow = currentUser; PermissoesNivelList1.CurrentNivelRow = currentNivel; PermissoesNivelList1.ReloadList(); }
public override void UpdateToolBarButtons(ListViewItem item) { GISADataset.TrusteeRow selectedTrusteeRow = null; if (item != null && item.ListView != null) { selectedTrusteeRow = (GISADataset.TrusteeRow)item.Tag; } else if (item != null && item.ListView != null && lstVwTrustees.SelectedItems.Count > 0) { selectedTrusteeRow = (GISADataset.TrusteeRow)(lstVwTrustees.SelectedItems[0].Tag); } this.ToolBarButtonAdd.Enabled = AllowCreate; this.ToolBarButtonEdit.Enabled = selectedTrusteeRow != null && !(selectedTrusteeRow.RowState == DataRowState.Detached) && AllowEdit; this.ToolBarButtonDelete.Enabled = selectedTrusteeRow != null && !(selectedTrusteeRow.RowState == DataRowState.Detached) && AllowDelete; }
public override void LoadData() { if (CurrentContext.PermissoesNivelObjDigital == null || CurrentContext.PermissoesTrusteeObjDigital == null) { mCurrentNivel = null; mCurrentTrustee = null; return; } mCurrentNivel = CurrentContext.PermissoesNivelObjDigital; mCurrentTrustee = CurrentContext.PermissoesTrusteeObjDigital; permissoesObjetoDigitalList1.CurrentTrusteeRow = mCurrentTrustee; permissoesObjetoDigitalList1.CurrentNivelRow = mCurrentNivel; permissoesObjetoDigitalList1.ReloadList(); }
private void MasterPanelSeries_StackChanged(frmMain.StackOperation stackOperation, bool isSupport) { switch (stackOperation) { case frmMain.StackOperation.Push: this.nivelNavigator1.MultiSelect = false; this.nivelNavigator1.IsParentSupport = isSupport; if (actualizaEstrutura) { resetEstrutura(); actualizaEstrutura = false; } if (isSupport) { AddDragHandlers(); groupBox1.Visible = false; } //ToolBarButtonFiltro.Pushed = false; //ToolBar_ButtonClick(this, new System.Windows.Forms.ToolBarButtonClickEventArgs(ToolBarButtonFiltro)); //this.nivelNavigator1.ClearFiltro(); if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Documental && this.nivelNavigator1.ContextBreadCrumbsPathID > 0) { this.nivelNavigator1.ReloadList(); } break; case frmMain.StackOperation.Pop: if (isSupport) { RemoveDragHandlers(); groupBox1.Visible = true; } //ToolBarButtonFiltro.Pushed = false; //ToolBar_ButtonClick(this, new System.Windows.Forms.ToolBarButtonClickEventArgs(ToolBarButtonFiltro)); //this.nivelNavigator1.ClearFiltro(); currentUser = null; txtSelectedUser.Text = string.Empty; break; } }
public override void LoadData(DataRow CurrentDataRow, IDbConnection conn) { IsLoaded = false; try { CurrentTrusteeRow = (GISADataset.TrusteeRow)CurrentDataRow; if (CurrentTrusteeRow != null) TrusteeRule.Current.LoadPanelTrusteePermissionsData(GisaDataSetHelper.GetInstance(), CurrentTrusteeRow.ID, conn); } catch (InvalidCastException) { CurrentTrusteeRow = null; return; } IsLoaded = true; }
protected virtual void updateListViewItem(ListViewItem li, GISADataset.TrusteeRow tRow) { li.Text = tRow.Name; while (li.SubItems.Count < li.ListView.Columns.Count) { li.SubItems.Add(""); } li.SubItems[ColumnHeaderIsActive.Index].Text = TranslationHelper.FormatBoolean(tRow.IsActive); if (tRow.IsDescriptionNull()) { li.SubItems[ColumnHeaderDescription.Index].Text = ""; } else { li.SubItems[ColumnHeaderDescription.Index].Text = tRow.Description; } li.Tag = tRow; }
public override void LoadData() { var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { CurrentTrustee = CurrentContext.Trustee; if (CurrentTrustee != null) DepositoRule.Current.LoadDepositosPermissionsData(GisaDataSetHelper.GetInstance(), CurrentTrustee.ID, ho.Connection); } catch (Exception) { CurrentTrustee = null; return; } finally { ho.Dispose(); } }
public static void LoadObjDigitalPermissions(GISADataset.NivelRow nRow, GISADataset.TrusteeRow tRow) { GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { // carregar a informação independentemente do contexto selecionado DBAbstractDataLayer.DataAccessRules.PermissoesRule.Current.LoadDataCIPermissoes(GisaDataSetHelper.GetInstance(), nRow.ID, ho.Connection); } catch (Exception e) { Trace.WriteLine(e); throw; } finally { ho.Dispose(); } var imgRowsObjDig = nRow.GetFRDBaseRows().Single().GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)); if (imgRowsObjDig.Count() == 1) { var odRow = imgRowsObjDig.Single().GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow; GisaDataSetHelper.GetInstance().ObjetoDigitalTipoOperation.Cast <GISADataset.ObjetoDigitalTipoOperationRow>().ToList().ForEach(op => { var perm = CalculateEffectivePermissions(odRow, tRow, nRow, op.TipoOperationRow); var isGrant = perm == PermissionType.ExplicitGrant || perm == PermissionType.ImplicitGrant; if (op.IDTipoOperation == (byte)TipoOperation.READ) { mObjDigAllowRead = isGrant; } else if (op.IDTipoOperation == (byte)TipoOperation.WRITE) { mObjDigAllowWrite = isGrant; } }); } else { mObjDigAllowRead = true; mObjDigAllowWrite = true; } }
public static PermissionType CalculateEffectivePermissions(GISADataset.TrusteeRow tRow, GISADataset.TipoOperationRow opRow, GISADataset.DepositoRow depRow) { var tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Cast <GISADataset.TrusteeDepositoPrivilegeRow>() .SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.IDTrustee == tRow.ID && r.IDTipoOperation == opRow.ID && r.IDDeposito == depRow.ID); if (tdpRow != null) { return(tdpRow.IsGrant ? PermissionType.ExplicitGrant : PermissionType.ExplicitDeny); } if (tRow.CatCode.Equals("USR")) { if (tRow.GetTrusteeUserRows().Length > 0) { var ugRows = tRow.GetTrusteeUserRows()[0].GetUserGroupsRows(); return(CalculateGroupPermissionsDepositos(ugRows, opRow, depRow)); } } return(PermissionType.ImplicitDeny); }
public static void ChangeToPermission(GISADataset.TrusteeRow user, GISADataset.NivelRow nivel, ListViewItem item, int colIndex, string permValue) { string TipoOperationName = item.ListView.Columns[colIndex].Text; var tnpRow = GetTrusteeNivelPrivilegeRow(user, nivel); if (permValue == null || permValue == string.Empty) { tnpRow[TipoOperationName] = DBNull.Value; } else if (permValue.Equals("Sim")) { tnpRow[TipoOperationName] = 1; } else if (permValue.Equals("Não")) { tnpRow[TipoOperationName] = 0; } var permissaoEfectiva = GetEffectivePermission(item, colIndex, TipoOperationName, tnpRow, user.ID); PopulatePermission(item, colIndex, tnpRow, permissaoEfectiva); }
public static void ChangeODPermission(GISADataset.TrusteeRow user, GISADataset.NivelRow nivel, ListViewItem item, int colIndex) { var odRow = item.Tag as GISADataset.ObjetoDigitalRow; var opRow = item.SubItems[colIndex].Tag as GISADataset.ObjetoDigitalTipoOperationRow; var todpRow = GisaDataSetHelper.GetInstance().TrusteeObjetoDigitalPrivilege.Cast <GISADataset.TrusteeObjetoDigitalPrivilegeRow>() .SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.IDObjetoDigital == odRow.ID && r.IDTipoOperation == opRow.IDTipoOperation && r.IDTrustee == user.ID); if (todpRow != null) { if (todpRow.IsGrant) { todpRow.IsGrant = false; } else { todpRow.Delete(); } } else { todpRow = GisaDataSetHelper.GetInstance().TrusteeObjetoDigitalPrivilege.Cast <GISADataset.TrusteeObjetoDigitalPrivilegeRow>() .SingleOrDefault(r => r.RowState == DataRowState.Deleted && (long)r["IDObjetoDigital", DataRowVersion.Original] == odRow.ID && (byte)r["IDTipoOperation", DataRowVersion.Original] == opRow.IDTipoOperation && (long)r["IDTrustee", DataRowVersion.Original] == user.ID); if (todpRow != null) { todpRow.RejectChanges(); todpRow.IsGrant = true; } else { todpRow = GisaDataSetHelper.GetInstance().TrusteeObjetoDigitalPrivilege.AddTrusteeObjetoDigitalPrivilegeRow(user, odRow, opRow, true, new byte[] { }, 0); } } // popular as alterações var permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(odRow, user, nivel, opRow.TipoOperationRow); PopulatePermission(item, colIndex, todpRow, permissaoEfectiva); }
public override void LoadData() { var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { CurrentTrustee = CurrentContext.Trustee; if (CurrentTrustee != null) { DepositoRule.Current.LoadDepositosPermissionsData(GisaDataSetHelper.GetInstance(), CurrentTrustee.ID, ho.Connection); } } catch (Exception) { CurrentTrustee = null; return; } finally { ho.Dispose(); } }
private void AddTrusteeIfUsernameDoesntExist(PersistencyHelper.PreConcArguments args) { PersistencyHelper.CreateTrusteePreConcArguments cetpca = null; cetpca = (PersistencyHelper.CreateTrusteePreConcArguments)args; GISADataset.TrusteeRow truRow = (GISADataset.TrusteeRow)(GisaDataSetHelper.GetInstance().Trustee.Select("ID=" + cetpca.truRowID.ToString())[0]); GISADataset.TrusteeUserRow usrRow = (GISADataset.TrusteeUserRow)(GisaDataSetHelper.GetInstance().TrusteeUser.Select("ID=" + cetpca.usrRowID.ToString())[0]); if (! (DBAbstractDataLayer.DataAccessRules.TrusteeRule.Current.isValidNewTrustee(truRow.Name, cetpca.tran))) { System.Data.DataSet tempgisaBackup1 = cetpca.gisaBackup; PersistencyHelper.BackupRow(ref tempgisaBackup1, usrRow); cetpca.gisaBackup = tempgisaBackup1; System.Data.DataSet tempgisaBackup2 = cetpca.gisaBackup; PersistencyHelper.BackupRow(ref tempgisaBackup2, truRow); cetpca.gisaBackup = tempgisaBackup2; usrRow.RejectChanges(); truRow.RejectChanges(); cetpca.successful = false; } else cetpca.successful = true; }
// as permissões alternam entre: atribuída -> não atribuída -> não definida (é o mesmo que não atribuído mas necessário // para definir heranças de grupos de utilizadores e/ou níveis hierarquicamente superiores) public static void ChangePermission(GISADataset.TrusteeRow user, GISADataset.NivelRow nivel, ListViewItem item, int colIndex) { string TipoOperationName = item.ListView.Columns[colIndex].Text; var tnpRow = GetTrusteeNivelPrivilegeRow(user, nivel); if (tnpRow[TipoOperationName] == DBNull.Value) { tnpRow[TipoOperationName] = 1; } else if ((byte)tnpRow[TipoOperationName] == 1) { tnpRow[TipoOperationName] = 0; } else { // a permissão explícita é apagada e a permissão efectiva passa a ser herdada pelo grupo e/ou nível // hierarquicamente superior (se for qualquer um dos casos) tnpRow[TipoOperationName] = DBNull.Value; } var permissaoEfectiva = GetEffectivePermission(item, colIndex, TipoOperationName, tnpRow, user.ID); PopulatePermission(item, colIndex, tnpRow, permissaoEfectiva); }
private void clearUserPermissions(GISADataset.TrusteeRow tRow) { GISADataset.TipoFunctionRow tfRow = ((SlavePanelPermissoesModulos)this).currentTipoFunction; foreach (GISADataset.TrusteePrivilegeRow tpRow in GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0} AND IDTipoFunctionGroup={1} AND IdxTipoFunction={2}", tRow.ID, tfRow.IDTipoFunctionGroup, tfRow.idx))) tpRow.Delete(); }
private void MasterPanelSeries_StackChanged(frmMain.StackOperation stackOperation, bool isSupport) { switch (stackOperation) { case frmMain.StackOperation.Push: this.nivelNavigator1.MultiSelect = false; this.nivelNavigator1.IsParentSupport = isSupport; if (actualizaEstrutura) { resetEstrutura(); actualizaEstrutura = false; } if (isSupport) { AddDragHandlers(); groupBox1.Visible = false; } //ToolBarButtonFiltro.Pushed = false; //ToolBar_ButtonClick(this, new System.Windows.Forms.ToolBarButtonClickEventArgs(ToolBarButtonFiltro)); //this.nivelNavigator1.ClearFiltro(); if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Documental && this.nivelNavigator1.ContextBreadCrumbsPathID > 0) this.nivelNavigator1.ReloadList(); break; case frmMain.StackOperation.Pop: if (isSupport) { RemoveDragHandlers(); groupBox1.Visible = true; } //ToolBarButtonFiltro.Pushed = false; //ToolBar_ButtonClick(this, new System.Windows.Forms.ToolBarButtonClickEventArgs(ToolBarButtonFiltro)); //this.nivelNavigator1.ClearFiltro(); currentUser = null; txtSelectedUser.Text = string.Empty; break; } }
// este metodo deve ser sempre overriden protected virtual void UpdateTrustees(GISADataset.TrusteeRow tRow) { }
protected override void AddTrustee() { GISADataset.TrusteeRow truRow = null; GISADataset.TrusteeUserRow usrRow = null; FormCreateTrustee form = new FormCreateTrustee(); form.Text = "Novo utilizador"; switch (form.ShowDialog()) { case DialogResult.OK: ((frmMain)TopLevelControl).EnterWaitMode(); truRow = GisaDataSetHelper.GetInstance().Trustee.NewTrusteeRow(); truRow.Name = form.txtTrusteeName.Text; truRow.Description = string.Empty; truRow.CatCode = "USR"; truRow.BuiltInTrustee = false; truRow.IsActive = true; truRow.Versao = new byte[]{}; truRow.isDeleted = 0; usrRow = GisaDataSetHelper.GetInstance().TrusteeUser.NewTrusteeUserRow(); usrRow.Password = ""; usrRow.FullName = ""; usrRow.IsAuthority = false; usrRow["IDTrusteeUserDefaultAuthority"] = DBNull.Value; usrRow.Versao = new byte[]{}; usrRow.isDeleted = 0; usrRow.TrusteeRow = truRow; // selecionar o grupo "TODOS" GISADataset.TrusteeGroupRow tgRow = (GISADataset.TrusteeGroupRow)(((GISADataset.TrusteeRow)(GisaDataSetHelper.GetInstance().Trustee.Select("Name='ACESSO_COMPLETO'")[0])).GetTrusteeGroupRows()[0]); // incluir o novo utilizador no grupo "TODOS" por omissão GisaDataSetHelper.GetInstance().Trustee.AddTrusteeRow(truRow); GisaDataSetHelper.GetInstance().TrusteeUser.AddTrusteeUserRow(usrRow); GisaDataSetHelper.GetInstance().UserGroups.AddUserGroupsRow(usrRow, tgRow, new byte[]{}, 0); PersistencyHelper.CreateTrusteePreConcArguments ctpca = new PersistencyHelper.CreateTrusteePreConcArguments(); ctpca.truRowID = truRow.ID; ctpca.usrRowID = usrRow.ID; Trace.WriteLine("A criar utilizador..."); PersistencyHelper.save(AddTrusteeIfUsernameDoesntExist, ctpca); PersistencyHelper.cleanDeletedData(); if (! ctpca.successful) { MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); UpdateTrustees(null); } else { // actualizar interface UpdateTrustees(truRow); } ((frmMain)TopLevelControl).LeaveWaitMode(); break; case DialogResult.Cancel: break; } }
private void ChangePermission(GISADataset.TrusteeRow user, ListViewItem item, int colIndex) { var depRow = item.Tag as GISADataset.DepositoRow; var opRow = item.SubItems[colIndex].Tag as GISADataset.DepositoTipoOperationRow; var tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Cast <GISADataset.TrusteeDepositoPrivilegeRow>() .SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.IDDeposito == depRow.ID && r.IDTipoOperation == opRow.IDTipoOperation && r.IDTrustee == user.ID); if (tdpRow != null) { if (tdpRow.IsGrant) { tdpRow.IsGrant = false; } else { tdpRow.Delete(); } } else { tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Cast <GISADataset.TrusteeDepositoPrivilegeRow>() .SingleOrDefault(r => r.RowState == DataRowState.Deleted && (long)r["IDDeposito", DataRowVersion.Original] == depRow.ID && (byte)r["IDTipoOperation", DataRowVersion.Original] == opRow.IDTipoOperation && (long)r["IDTrustee", DataRowVersion.Original] == user.ID); if (tdpRow != null) { tdpRow.RejectChanges(); tdpRow.IsGrant = true; } else { tdpRow = GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.AddTrusteeDepositoPrivilegeRow(user, depRow, opRow, true, new byte[] { }, 0); } } // popular as alterações PermissoesHelper.PermissionType permissaoEfectiva = PermissoesHelper.CalculateEffectivePermissions(CurrentTrustee, opRow.TipoOperationRow, depRow); //PermissoesHelper.PopulatePermission(item, colIndex, tdpRow, permissaoEfectiva); if (permissaoEfectiva == PermissoesHelper.PermissionType.ExplicitGrant) { item.SubItems[colIndex].Text = "Sim"; } else { item.SubItems[colIndex].Text = "Não"; } GISADataset.TrusteeDepositoPrivilegeRow[] tpRows = (GISADataset.TrusteeDepositoPrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Select(string.Format("IDTrustee={0} AND IDDeposito={1} AND IDTipoOperation={2}", user.ID, depRow.ID, opRow.IDTipoOperation))); if (tpRows.Length == 0) { tpRows = (GISADataset.TrusteeDepositoPrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteeDepositoPrivilege.Select(string.Format("IDTrustee={0} AND IDDeposito={1} AND IDTipoOperation={2}", user.ID, depRow.ID, opRow.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 override void Deactivate() { DeactivatePanels(); CurrentTrustee = null; }
public static void UndoAddNivelGrantPermissions(GISADataset.NivelRow NivelRow, GISADataset.TrusteeRow trusteeRow) { Trace.WriteLine("Removing privileges from nivel with ID " + NivelRow.ID.ToString()); GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.Cast <GISADataset.TrusteeNivelPrivilegeRow>(). Where(tnp => tnp.RowState != DataRowState.Deleted && tnp.IDNivel == NivelRow.ID && tnp.IDTrustee == trusteeRow.ID).ToList().ForEach(r => r.Delete()); }
public static void DeleteTrusteeAndRelatedRows(GISADataset.TrusteeRow truRow) { GISADataset.TrusteeGroupRow[] grpRows = truRow.GetTrusteeGroupRows(); GISADataset.TrusteeUserRow[] usrRows = truRow.GetTrusteeUserRows(); GISADataset.UserGroupsRow[] ugRows = null; List <long> UserIDs = new List <long>(); if (grpRows.Length > 0) { ugRows = grpRows[0].GetUserGroupsRows(); foreach (GISADataset.UserGroupsRow ugRow in ugRows) { UserIDs.Add(ugRow.IDUser); } } else if (usrRows.Length > 0) { ugRows = usrRows[0].GetUserGroupsRows(); } GISADataset.TrusteePrivilegeRow[] tpRows = (GISADataset.TrusteePrivilegeRow[])(GisaDataSetHelper.GetInstance().TrusteePrivilege.Select(string.Format("IDTrustee={0}", truRow.ID))); foreach (GISADataset.TrusteePrivilegeRow tpRow in tpRows) { tpRow.Delete(); } if (ugRows != null) { foreach (GISADataset.UserGroupsRow ugRow in ugRows) { ugRow.Delete(); } } foreach (GISADataset.TrusteeGroupRow grpRow in grpRows) { grpRow.Delete(); } foreach (GISADataset.TrusteeUserRow usrRow in usrRows) { foreach (GISADataset.TrusteeUserRow uRowAuth in usrRow.GetTrusteeUserRows()) { uRowAuth.SetIDTrusteeUserDefaultAuthorityNull(); } usrRow.Delete(); } truRow.Delete(); try { PersistencyHelper.save(); PersistencyHelper.cleanDeletedData(); } catch (Exception ex) { Trace.WriteLine(ex); throw; } }
public override void LoadData() { //AddHandler CurrentContext.TrusteeChanged, AddressOf TrusteeChanged if (CurrentContext.Trustee == null) { CurrentTrustee = null; return; } this.CurrentTrustee = CurrentContext.Trustee; IDbConnection conn = GisaDataSetHelper.GetConnection(); try { conn.Open(); GISAPanel selectedPanel = (GISAPanel)this.DropDownTreeView1.SelectedNode.Tag; if (! selectedPanel.IsLoaded) selectedPanel.LoadData(CurrentTrustee, conn); } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { conn.Close(); } }
public override void LoadData(DataRow CurrentDataRow, IDbConnection conn) { IsLoaded = false; if (CurrentDataRow == null) return; CurrentTrusteeRow = (GISADataset.TrusteeRow)CurrentDataRow; // carregar informação da base de dados TrusteeRule.Current.LoadMembership(GisaDataSetHelper.GetInstance(), CurrentTrusteeRow.ID, conn); IsLoaded = true; }
public override void Deactivate() { GUIHelper.GUIHelper.clearField(txtGroupName); GUIHelper.GUIHelper.clearField(chkActive); GUIHelper.GUIHelper.clearField(txtDescription); GUIHelper.GUIHelper.clearField(lvMembers); CurrentTrusteeRow = null; }
public static PermissionType CalculateEffectivePermissions(GISADataset.ObjetoDigitalRow odRow, GISADataset.TrusteeRow tRow, GISADataset.NivelRow nRow, GISADataset.TipoOperationRow opRow) { var tdpRow = GisaDataSetHelper.GetInstance().TrusteeObjetoDigitalPrivilege.Cast <GISADataset.TrusteeObjetoDigitalPrivilegeRow>() .SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.IDTrustee == tRow.ID && r.IDTipoOperation == opRow.ID && r.IDObjetoDigital == odRow.ID); if (tdpRow != null) { return(tdpRow.IsGrant ? PermissionType.ExplicitGrant : PermissionType.ExplicitDeny); } else { var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { var perm = PermissoesRule.Current.CalculateODGroupPermissions(tRow.ID, odRow.ID, opRow.ID, ho.Connection); if (perm < 0) { var nivelPerms = PermissoesRule.Current.CalculateEffectivePermissions(new List <long>() { nRow.ID }, tRow.ID, ho.Connection); return(GetPermissionValue(nivelPerms[nRow.ID], GisaDataSetHelper.GetInstance().NivelTipoOperation.Cast <GISADataset.NivelTipoOperationRow>().Single(r => r.TipoOperationRow.Name.Equals(opRow.Name))) == 1 ? PermissionType.ImplicitGrant : PermissionType.ImplicitDeny); } else { return(perm == 0 ? PermissionType.ImplicitDeny : PermissionType.ImplicitGrant); } } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { ho.Dispose(); } } }
private static GISADataset.TrusteeNivelPrivilegeRow GetTrusteeNivelPrivilegeRow(GISADataset.TrusteeRow user, GISADataset.NivelRow nivel) { var tnpRow = GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.Rows.Cast <GISADataset.TrusteeNivelPrivilegeRow>() .SingleOrDefault(r => r.IDNivel == nivel.ID && r.IDTrustee == user.ID && r.RowState != DataRowState.Deleted); if (tnpRow == null) { tnpRow = GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.Rows.Cast <GISADataset.TrusteeNivelPrivilegeRow>() .SingleOrDefault(r => r.IDNivel == nivel.ID && r.IDTrustee == user.ID && r.RowState == DataRowState.Deleted); if (tnpRow != null) { tnpRow.RejectChanges(); } else { tnpRow = GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.NewTrusteeNivelPrivilegeRow(); tnpRow.IDTrustee = user.ID; tnpRow.IDNivel = nivel.ID; tnpRow["Criar"] = DBNull.Value; tnpRow["Ler"] = DBNull.Value; tnpRow["Escrever"] = DBNull.Value; tnpRow["Apagar"] = DBNull.Value; tnpRow["Expandir"] = DBNull.Value; tnpRow.Versao = new byte[] { }; tnpRow.isDeleted = 0; GisaDataSetHelper.GetInstance().TrusteeNivelPrivilege.AddTrusteeNivelPrivilegeRow(tnpRow); } } return(tnpRow); }