SourceCode/PROMS/VEPROMS User Interface/dlgManageSecurity.cs

405 lines
11 KiB
C#

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<MembershipInfo> 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<MembershipInfo>();
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<MembershipInfo>();
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");
}
}
}