using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; using Volian.Base.Library; namespace VEPROMS { public partial class dlgManageSecurity : Form { #region Log4Net private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #endregion private User myUser; private GroupInfoList myGroupInfoList; private UserInfoList myUserInfoList; private List myMembershipInfoList; //private FolderInfo myFolderInfo; private Folder myFolder; public dlgManageSecurity() { InitializeComponent(); } //private void btnApplyPassword_Click(object sender, EventArgs e) //{ // string pw = txtVolianPassword.Text; // if (pw == "V3Pr0m5") // { // MessageBox.Show("You have entered the correct password. You will now be defined as the Administrator for VEPROMS", "Correct Password"); // User user = User.MakeUser(VlnSettings.UserID, "", "", "", "", "", "", "", "", "", "", DateTime.Now, VlnSettings.UserID); // Group group = Group.GetByGroupName("Administrators"); // Membership m = Membership.MakeMembership(user, group, null, ""); // tcSecurity.TabPages.Add(tpGroupUsers); // tcSecurity.TabPages.Remove(tpDefault); // SetupSecurity(); // } // else // { // MessageBox.Show("You have entered an incorrect password", "Incorrect Password"); // this.Close(); // } //} private void dlgManageSecurity_Load(object sender, EventArgs e) { myFolder = Folder.Get(1); SetupSecurity(); SetupGroups(); } private void SetupGroups() { pnlGroups.Controls.Clear(); //GroupInfoList gil = GroupInfoList.Get(); foreach (GroupInfo gi in myGroupInfoList) { RadioButton rb = new RadioButton(); rb.Text = gi.GroupName; rb.Parent = pnlGroups; rb.Dock = DockStyle.Top; rb.Tag = gi; rb.CheckedChanged += new EventHandler(rb_CheckedChanged); pnlGroups.Controls.Add(rb); rb.BringToFront(); if (myFolder.FolderConfig.Security_Group == 0 && gi.GID == 1) { myFolder.FolderConfig.Security_Group = gi.GID; rb.Checked = true; myFolder.Save(); } else if (myFolder.FolderConfig.Security_Group == gi.GID) { rb.Checked = true; } } } void rb_CheckedChanged(object sender, EventArgs e) { RadioButton rb = sender as RadioButton; GroupInfo gi = rb.Tag as GroupInfo; label8.Text = gi.GroupAssignments[0].MyRole.Title + " for " + gi.GroupAssignments[0].MyFolder.Name; myFolder.FolderConfig.Security_Group = gi.GID; myFolder.Save(); } private void SetupSecurity() { if (tvFolders.Nodes.Count == 0) { FolderInfo fi = FolderInfo.Get(1); LoadChildFolders(fi, null); } lstGroupUsers.Items.Clear(); lstUsers.Items.Clear(); lstGroups.Items.Clear(); GroupInfoList.Reset(); UserInfoList.Reset(); myGroupInfoList = GroupInfoList.Get(); myUserInfoList = UserInfoList.Get(); foreach (GroupInfo gi in myGroupInfoList) lstGroups.Items.Add(gi.GroupName); lstGroups.SelectedIndex = 0; foreach (UserInfo ui in myUserInfoList) lstUsers.Items.Add(ui.UserID); lstGroups.SelectedIndex = -1; lstUsers.SelectedIndex = -1; } private void LoadChildFolders(FolderInfo fi, TreeNode tn) { if (tn == null) { tn = tvFolders.Nodes.Add(fi.Name); tn.Tag = fi; } else { tn = tn.Nodes.Add(fi.Name); tn.Tag = fi; } if (fi.ChildFolderCount > 0) { foreach (FolderInfo fic in fi.ChildFolders) { LoadChildFolders(fic, tn); } } } private void lstGroups_SelectedIndexChanged(object sender, EventArgs e) { myMembershipInfoList = new List(); lstGroupUsers.Items.Clear(); if (lstGroups.SelectedIndex > -1) { GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; if (gi.GroupMembershipCount > 0) foreach (MembershipInfo mi in gi.GroupMemberships) { if (mi.EndDate == null || mi.EndDate == string.Empty) { myMembershipInfoList.Add(mi); lstGroupUsers.Items.Add(mi.MyUser.UserID); } } } } private void addMemberToolStripMenuItem_Click(object sender, EventArgs e) { if (lstGroups.SelectedIndices.Count < 1) { MessageBox.Show(this, "You must select at least one Group to proceed", "Missing Group"); return; } if (lstUsers.SelectedIndices.Count < 1) { MessageBox.Show(this, "You must select at least one User to proceed", "Missing User"); return; } int groupIndex = lstGroups.SelectedIndex; int userIndex = lstUsers.SelectedIndex; foreach (int gg in lstGroups.SelectedIndices) { foreach (int uu in lstUsers.SelectedIndices) { GroupInfo gi = myGroupInfoList[gg]; UserInfo ui = myUserInfoList[uu]; bool addOK = true; if (gi.GroupMembershipCount > 0) { foreach (MembershipInfo mi in gi.GroupMemberships) if (mi.MyUser.UID == ui.UID && (mi.EndDate == null || mi.EndDate == string.Empty)) { addOK = false; break; } } if (addOK) { Membership.MakeMembership(User.Get(ui.UID), Group.Get(gi.GID), null, ""); } else MessageBox.Show(this, string.Format("User {0} is already a member of group {1}", ui.UserID, gi.GroupName), "User In Group"); } } SetupSecurity(); lstGroups.SelectedIndex = groupIndex; lstUsers.SelectedIndex = userIndex; } private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e) { if (lstGroups.SelectedIndices.Count < 1) { MessageBox.Show(this, "You must select at least one Group to proceed", "Missing Group"); return; } if (lstGroupUsers.SelectedIndices.Count < 1) { MessageBox.Show(this, "You must select at least one Group Member to proceed", "Missing Group Member"); return; } string msg = lstGroupUsers.SelectedIndices.Count > 1 ? "Are you sure you want to remove these Group Members?" : "Are you sure you want to remove this Group Member?"; if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) { foreach (int gg in lstGroups.SelectedIndices) { GroupInfo gi = myGroupInfoList[gg]; foreach (MembershipInfo mi in gi.GroupMemberships) { foreach (int mm in lstGroupUsers.SelectedIndices) { MembershipInfo mig = myMembershipInfoList[mm]; if (mi.MyUser.UID == mig.MyUser.UID) { Membership m = Membership.Get(mi.UGID); m.EndDate = DateTime.Now.ToShortDateString(); m.Save(); } } } } SetupSecurity(); } } private void addUserToolStripMenuItem_Click(object sender, EventArgs e) { //to do add user manually /* * create new input form * get userid * create user * add to default group * */ User u = User.MakeUser("[Enter New UserID]","", "", "", "", "", "", "", "", "", "",DateTime.Now,""); frmManageUser frm = new frmManageUser(); frm.MyUser = u; if (frm.ShowDialog(this) == DialogResult.OK) { u = frm.MyUser; u.Save(); Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", ""); SetupSecurity(); } else { u.Delete(); } } private void editUserToolStripMenuItem_Click(object sender, EventArgs e) { if (lstUsers.SelectedIndex == -1) { MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; using (User u = User.Get(ui.UID)) { frmManageUser frm = new frmManageUser(); frm.MyUser = u; if (frm.ShowDialog(this) == DialogResult.OK) { frm.MyUser.Save(); } } } private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e) { if (lstUsers.SelectedIndex == -1) { MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; SessionInfoList sil = SessionInfoList.Get(); foreach (SessionInfo si in sil) { if (si.UserID == ui.UserID) { MessageBox.Show("The user selected has an active session. You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } int k = 0; foreach (MembershipInfo mi in ui.UserMemberships) { if (mi.EndDate == null || mi.EndDate == string.Empty) k++; } if (k > 0) { MessageBox.Show("You must remove user from all groups that user is a member of in order to delete user", "User Has Memberships", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (MessageBox.Show("Are you sure you want to delete this user?", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) { User.Delete(ui.UID); SetupSecurity(); } //to do delete user //end date user memberships //delete user } private void createGroupMenuItem(object sender, EventArgs e) { try { ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; TreeNode tn = tvFolders.SelectedNode; FolderInfo fi = tn.Tag as FolderInfo; AddNewGroup(tsddi.Text, fi); SetupSecurity(); } catch (Exception ex) { _MyLog.Warn("createGroupMenuItem", ex); } } private void AddNewGroup(string txt, FolderInfo fi) { txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim(); RoleInfoList ril = RoleInfoList.Get(); foreach(RoleInfo ri in ril) { if (ri.Name == txt) { string gin = string.Format("{0}s - {1}", ri.Name, fi.Name); bool addOK = true; foreach (GroupInfo gi in myGroupInfoList) { if (gin == gi.GroupName) { addOK = false; break; } } if (addOK) { Group group = Group.MakeGroup(gin, null, null); Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null); } } } GroupInfoList.Reset(); myGroupInfoList = GroupInfoList.Get(); SetupGroups(); } private void lstUsers_SelectedIndexChanged(object sender, EventArgs e) { /* myMembershipInfoList = new List(); lstGroupUsers.Items.Clear(); GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex]; if(gi.GroupMembershipCount > 0) foreach (MembershipInfo mi in gi.GroupMemberships) { if (mi.EndDate == null || mi.EndDate == string.Empty) { myMembershipInfoList.Add(mi); lstGroupUsers.Items.Add(mi.MyUser.UserID); } } */ lstUserGroups.Items.Clear(); if(lstUsers.SelectedIndex > -1){ UserInfo ui = myUserInfoList[lstUsers.SelectedIndex]; if (ui.UserMembershipCount > 0) { foreach (MembershipInfo mi in ui.UserMemberships) { if (mi.EndDate == null || mi.EndDate == string.Empty) { lstUserGroups.Items.Add(mi.MyGroup.GroupName); } } } } } private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { tvFolders.SelectedNode = e.Node; } private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("here"); } } }