private void btn_addPermission_Save_Click(object sender, EventArgs e) { Program.ExitCode status; if (tb_Name.Text != "") { Permission p = new Permission { Name = tb_Name.Text, Policy_Id = Convert.ToInt32(cb_Policy.SelectedValue) }; status = RBACManager.AddPermission(p, mainForm.db.Action.Single(a => a.Id == Convert.ToInt32(cb_Action.SelectedValue)), mainForm.db.Object.Single(o => o.Id == Convert.ToInt32(cb_Object.SelectedValue)), mainForm.db); if (status == Program.ExitCode.Error) { MessageBox.Show(this, "Error while Submiting results in the DataBase!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (status == Program.ExitCode.Success) { MessageBox.Show(this, "Permission добавлен!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); return; } if (status == Program.ExitCode.ElementExists) { MessageBox.Show(this, "Permission с такими параметрами уже существует!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } else { MessageBox.Show(this, "Вы не заполнили поле'Name'!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
partial void DeletePermission(Permission instance);
partial void UpdatePermission(Permission instance);
partial void InsertPermission(Permission instance);
private void detach_Permission(Permission entity) { this.SendPropertyChanging(); entity.Policy = null; }
private void attach_Permission(Permission entity) { this.SendPropertyChanging(); entity.Policy = this; }
public static Program.ExitCode RmPermission(Permission p_in, rbacLINQ2SQLDataContext db, bool submitChanges = true) { var query_p = from p in db.Permission where p.Name == p_in.Name && p.Policy_Id == p_in.Policy_Id select p; if (query_p.Count() == 0) { return Program.ExitCode.ElementDoesNotExists; } db.PermissionPerObject.DeleteAllOnSubmit(query_p.First().PermissionPerObject); db.RolePermission.DeleteAllOnSubmit(query_p.First().RolePermission); db.Permission.DeleteOnSubmit(query_p.First()); try { if (submitChanges) db.SubmitChanges(); return Program.ExitCode.Success; } catch (Exception exc) { return Program.ExitCode.Error; } }
public static void AddPermission_noTryCatch(Permission p_in, Action a_in, Object o_in, rbacLINQ2SQLDataContext db) { bool ppo_exists = false; bool p_exists = false; var query_p = from p in db.Permission where p.Name == p_in.Name && p.Policy_Id == p_in.Policy_Id select p; if (query_p.Count() != 0) p_exists = true; // if does not exist in Permission_Table, add: if (!p_exists) { db.Permission.InsertOnSubmit(p_in); db.SubmitChanges(); System.Diagnostics.Debug.WriteLine("Added Permission {0}:", p_in.Name); } else { System.Diagnostics.Debug.WriteLine("Existing Permission {0}:", p_in.Name); } Permission perm = db.Permission.Single(p => p.Name == p_in.Name && p.Policy_Id == p_in.Policy_Id); var query_ppo = from ppo in db.PermissionPerObject where ppo.Action_Id == a_in.Id && ppo.Object_Id == o_in.Id && ppo.Permission_Id == perm.Id select ppo; if (query_ppo.Count() != 0) { ppo_exists = true; System.Diagnostics.Debug.WriteLine("Existing PermissionPerObject {0}->({1},{2}):",p_in.Name,a_in.Name,o_in.Name); } // if does not exist in PermissionPerObject_Table, add: else { db.PermissionPerObject.InsertOnSubmit(new PermissionPerObject { Action_Id = a_in.Id, Object_Id = o_in.Id, Permission_Id = perm.Id }); db.SubmitChanges(); System.Diagnostics.Debug.WriteLine("Added PermissionPerObject {0}->({1},{2}):", p_in.Name, a_in.Name, o_in.Name); } }
public static Program.ExitCode AddPermission(Permission p_in, Action a_in, Object o_in, rbacLINQ2SQLDataContext db) { bool ppo_exists = false; bool p_exists = false; var query_p = from p in db.Permission where p.Name == p_in.Name && p.Policy_Id == p_in.Policy_Id select p; if (query_p.Count() != 0) p_exists = true; // if does not exist in Permission_Table, add: if (!p_exists) { db.Permission.InsertOnSubmit(p_in); try { db.SubmitChanges(); } catch (Exception exc) { return Program.ExitCode.Error; } } Permission perm = db.Permission.Single(p => p.Name == p_in.Name && p.Policy_Id == p_in.Policy_Id); var query_ppo = from ppo in db.PermissionPerObject where ppo.Action_Id == a_in.Id && ppo.Object_Id == o_in.Id && ppo.Permission_Id == perm.Id select ppo; if (query_ppo.Count() != 0) ppo_exists = true; if (ppo_exists) { return Program.ExitCode.ElementExists; } // if does not exist in PermissionPerObject_Table, add: else { db.PermissionPerObject.InsertOnSubmit(new PermissionPerObject{ Action_Id = a_in.Id, Object_Id = o_in.Id, Permission_Id = perm.Id}); try { db.SubmitChanges(); return Program.ExitCode.Success; } catch (Exception exc) { return Program.ExitCode.Error; } } }
private static void XMLWritePermissionPerObject(Permission permission, XmlWriter xmlWriter) { xmlWriter.WriteStartElement("PermissionsPerObject"); foreach (PermissionPerObject ppo in permission.PermissionPerObject) { xmlWriter.WriteStartElement("PpO"); xmlWriter.WriteAttributeString("action", ppo.Action.Name); xmlWriter.WriteAttributeString("object", ppo.Object.Name); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); }
private static void XMLWritePermission(Permission permission, XmlWriter xmlWriter) { xmlWriter.WriteStartElement("Permission"); xmlWriter.WriteAttributeString("name", permission.Name); XMLWritePermissionPerObject(permission, xmlWriter); xmlWriter.WriteEndElement(); }
private static bool XMLReadPermission(XmlNode permissionNode, int pid, rbacLINQ2SQLDataContext db) { Permission perm; Action act; Object obj; perm = new Permission() { Name = permissionNode.Attributes["name"].Value, Policy_Id = pid }; // If there's no single PermissionPerObject block, error: if (permissionNode.ChildNodes.Count != 1) { return false; } XmlNode ppoBlock = permissionNode.ChildNodes.Item(0); // If there's no PpO entry - error; // There may not be a permission without any (Action,Object) pair: if (ppoBlock.ChildNodes.Count == 0) { return false; } foreach (XmlNode ppoNode in ppoBlock.ChildNodes) { act = db.Action.Single(x => x.Name == ppoNode.Attributes["action"].Value); obj = db.Object.Single(x => x.Name == ppoNode.Attributes["object"].Value); RBACManager.AddPermission_noTryCatch(perm, act, obj, db); } return true; }