Use static function to check user’s security level
Pass user security info to the panels, fix security related issues on the V button (B2015-188, B2015-193) Added static functions to check the user’s security level Use static function to check user’s security level in allowing applicability changes Use static function to check user’s security level in enabling Inserting and RO and in Editing an RO
This commit is contained in:
@@ -62,7 +62,7 @@ namespace VEPROMS
|
||||
sb.AppendLine(string.Format("in a VEPROMS session on computer {0} that was started on {1}", MySessionInfo.MachineName, MySessionInfo.DTSDtart.ToString("MM/dd/yyyy @ HH:mm:ss")));
|
||||
lblInfo.Text = sb.ToString();
|
||||
if(MyProcedureInfo != null)
|
||||
btnForce.Visible = MyUserInfo.IsAdministrator() || MyUserInfo.IsSetAdministrator(MyProcedureInfo.MyDocVersion) || (MyUserInfo.IsWriter(MyProcedureInfo.MyDocVersion) && MyOwnerInfo.OwnerItemID == MyProcedureInfo.ItemID);
|
||||
btnForce.Visible = UserInfo.CanEdit(MyUserInfo,MyProcedureInfo.MyDocVersion) && MyOwnerInfo.OwnerItemID == MyProcedureInfo.ItemID;
|
||||
else
|
||||
btnForce.Visible = MyUserInfo.IsAdministrator() || MyUserInfo.IsSetAdministrator(MySectionInfo.MyProcedure.MyDocVersion);
|
||||
}
|
||||
|
@@ -1140,6 +1140,9 @@ namespace VEPROMS
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public UserInfo MyUserInfo = null;
|
||||
|
||||
public VersionWindowList MyVersionWindowList;
|
||||
public ContentInfo ci1;
|
||||
public ContentInfo ci2;
|
||||
@@ -1165,31 +1168,36 @@ namespace VEPROMS
|
||||
btnAdministrativeTools.Click += new EventHandler(btnAdministrativeTools_Click);
|
||||
btnAdmin.SubItems.Add(btnAdministrativeTools);
|
||||
//end batch refresh transitions
|
||||
UserInfo ui = null;
|
||||
try
|
||||
{
|
||||
ui = UserInfo.GetByUserID(VlnSettings.UserID);
|
||||
MyUserInfo = UserInfo.GetByUserID(VlnSettings.UserID);
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("This database is not compatible with this version of PROMS. The PROMS program will terminate. Please contact Volian to assist in resolution.");
|
||||
Application.Exit();
|
||||
}
|
||||
if (ui == null)
|
||||
if (MyUserInfo == null)
|
||||
{
|
||||
User u = User.MakeUser(VlnSettings.UserID, "", "", "", "", "", "", "", "", "", "", DateTime.Now, VlnSettings.UserID);
|
||||
Group g = Group.Get(securityRole);
|
||||
Membership.MakeMembership(u, g, null, "");
|
||||
ui = UserInfo.Get(u.UID);
|
||||
MyUserInfo = UserInfo.Get(u.UID);
|
||||
}
|
||||
ctrlAnnotationDetails.MyUserInfo = ui;
|
||||
DisplayRO.MyUserInfo = ui; // set the user's security information in the properties RO panel
|
||||
StepTabRibbon.MyUserInfo = ui; // set the user's security information in the ribbon
|
||||
bool isVisible = ui.IsAdministrator();
|
||||
ctrlAnnotationDetails.MyUserInfo = MyUserInfo;
|
||||
DisplayRO.MyUserInfo = MyUserInfo; // set the user's security information in the properties RO panel
|
||||
StepTabRibbon.MyUserInfo = MyUserInfo; // set the user's security information in the ribbon
|
||||
DisplayTransition.MyUserInfo = MyUserInfo; // set the user's security information in the Transition panel
|
||||
DisplayTags.MyUserInfo = MyUserInfo; // set the user's security information in the Tags panel
|
||||
DisplayHistory.MyUserInfo = MyUserInfo; // set the user's security information in the History panel
|
||||
DisplayApplicability.MyUserInfo = MyUserInfo; // set the user's security information in the Applicability panel
|
||||
StepRTB.MyUserInfo = MyUserInfo; // set the user's security information in the StepRTB
|
||||
VlnFlexGrid.MyUserInfo = MyUserInfo; // set the user's security information in the VlnFlexGrid
|
||||
bool isVisible = MyUserInfo.IsAdministrator();
|
||||
btnManageSecurity.Visible = isVisible;
|
||||
btnUpdateFormats.Visible = isVisible;
|
||||
btnResetSecurity.Visible = isVisible;
|
||||
btnAdministrativeTools.Visible = isVisible || HasSetAdministrator(ui);
|
||||
btnAdministrativeTools.Visible = isVisible || HasSetAdministrator(MyUserInfo);
|
||||
tmrCloseTabItems = new Timer();
|
||||
tmrCloseTabItems.Interval = 100;
|
||||
tmrCloseTabItems.Tick += new EventHandler(tmrCloseTabItems_Tick);
|
||||
@@ -2614,6 +2622,7 @@ namespace VEPROMS
|
||||
infoPanel.Expanded = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
displayTags.MyEditItem = (SelectedStepTabPanel == null) ? null : SelectedStepTabPanel.MyStepPanel.SelectedEditItem;
|
||||
displayTags.Mydvi = SelectedDVI;
|
||||
}
|
||||
#endregion
|
||||
#region InfoTabBookMarks
|
||||
@@ -2855,6 +2864,7 @@ namespace VEPROMS
|
||||
|
||||
displayRO.MyRTB = args.MyEditItem.MyStepRTB;
|
||||
displayTags.MyEditItem = args.MyEditItem;
|
||||
displayTags.Mydvi = SelectedDVI;
|
||||
displayBookMarks.MyEditItem = args.MyEditItem;
|
||||
displayHistory.MyEditItem = args.MyEditItem;
|
||||
|
||||
@@ -2981,17 +2991,17 @@ namespace VEPROMS
|
||||
FolderInfo fi = vtn.VEObject as FolderInfo;
|
||||
if (fi != null)
|
||||
{
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
{
|
||||
btnNew.Enabled = false;
|
||||
return;
|
||||
}
|
||||
// Enable/disable the New button based on the user's security settings at the current folder level
|
||||
// B2015-193
|
||||
btnNew.Enabled = UserInfo.CanCreateFolders(MyUserInfo, fi);
|
||||
if (!btnNew.Enabled) return; // just return, user cannot add a new folder or workingdraft
|
||||
|
||||
// if at top, 'VEPROMS', folder and childfolders below this only
|
||||
// option is to create a new (sub)folder, i.e. no submenu items.
|
||||
if (fi.ChildFolderCount > 0 && fi.MyParent == null) return;
|
||||
//if (fi.ChildFolderCount == 0) // submenu folders/docversion
|
||||
//{
|
||||
if (fi.MyParent != null)
|
||||
if (fi.ChildFolderCount > 0 && fi.MyParent == null) return;
|
||||
|
||||
// submenu folders/docversion
|
||||
if (fi.MyParent != null && UserInfo.CanCreateFolders(MyUserInfo,fi))
|
||||
{
|
||||
ButtonItem fldbbtn = new ButtonItem("fldbtn", "Folder Before");
|
||||
ButtonItem fldabtn = new ButtonItem("fldabtn", "Folder After");
|
||||
@@ -3003,25 +3013,38 @@ namespace VEPROMS
|
||||
ButtonItem fldbtn = new ButtonItem("fldbtn", "Folder");
|
||||
btnNew.SubItems.Add(fldbtn);
|
||||
fldbtn.Click += new EventHandler(fldbtn_Click);
|
||||
if (fi.ChildFolderCount == 0)
|
||||
|
||||
// offer adding a Working Draft only if the folder has no sub-folders and there is not already a Working Draft node
|
||||
if (fi.ChildFolderCount == 0 && fi.FolderDocVersionCount == 0)
|
||||
{
|
||||
ButtonItem dvbtn = new ButtonItem("dvbtn", "Working Draft");
|
||||
btnNew.SubItems.Add(dvbtn);
|
||||
dvbtn.Click += new EventHandler(dvbtn_Click);
|
||||
}
|
||||
return;
|
||||
//}
|
||||
}
|
||||
|
||||
// DocVersions can only have procedures, so no sub-menu
|
||||
DocVersionInfo dvi = vtn.VEObject as DocVersionInfo;
|
||||
if (dvi != null) return;
|
||||
if (dvi != null)
|
||||
{
|
||||
if (!UserInfo.CanEdit(MyUserInfo, dvi))
|
||||
btnNew.Enabled = false; // reviewers cannot create a new procedure B2015-193
|
||||
return;
|
||||
}
|
||||
|
||||
// Procedures can have a section added or a new procedure before
|
||||
// or after.
|
||||
ProcedureInfo pi = vtn.VEObject as ProcedureInfo;
|
||||
if (pi != null)
|
||||
{
|
||||
// if user is a reviewer then don't allow adding new procedures
|
||||
// bug B2015-193
|
||||
if (!UserInfo.CanEdit(MyUserInfo, pi.MyDocVersion))
|
||||
{
|
||||
btnNew.Enabled = false;
|
||||
return;
|
||||
}
|
||||
ButtonItem pbbtn = new ButtonItem("pfbtn", "Procedure Before");
|
||||
ButtonItem pabtn = new ButtonItem("pabtn", "Procedure After");
|
||||
ButtonItem sctbtn = new ButtonItem("sctbtn", "Section");
|
||||
@@ -3039,6 +3062,13 @@ namespace VEPROMS
|
||||
SectionInfo si = vtn.VEObject as SectionInfo;
|
||||
if (si != null)
|
||||
{
|
||||
// if user is a reviewer then don't allow adding new sections
|
||||
// bug B2015-193
|
||||
if (!UserInfo.CanEdit(MyUserInfo, si.MyDocVersion))
|
||||
{
|
||||
btnNew.Enabled = false;
|
||||
return;
|
||||
}
|
||||
ButtonItem sbbtn = new ButtonItem("sbbtn", "Section Before");
|
||||
ButtonItem sabtn = new ButtonItem("sabtn", "Section After");
|
||||
ButtonItem subbtn = new ButtonItem("subbtn", "SubSection");
|
||||
@@ -3061,6 +3091,13 @@ namespace VEPROMS
|
||||
StepInfo stpi = vtn.VEObject as StepInfo;
|
||||
if (stpi != null)
|
||||
{
|
||||
// if user is a reviewer then don't allow adding new procedures, sections, or steps
|
||||
// bug B2015-193
|
||||
if (!UserInfo.CanEdit(MyUserInfo, stpi.MyDocVersion))
|
||||
{
|
||||
btnNew.Enabled = false;
|
||||
return;
|
||||
}
|
||||
ButtonItem stpbbtn = new ButtonItem("stpbbtn", "New Step Before");
|
||||
ButtonItem stpabtn = new ButtonItem("stpabtn", "New Step After");
|
||||
btnNew.SubItems.Add(stpbbtn);
|
||||
@@ -3069,6 +3106,7 @@ namespace VEPROMS
|
||||
stpabtn.Click += new EventHandler(stpabtn_Click);
|
||||
return;
|
||||
}
|
||||
btnNew.Enabled = false; // should not get this far, but just in case turn off the New button
|
||||
}
|
||||
|
||||
void fldabtn_Click(object sender, EventArgs e)
|
||||
@@ -3143,6 +3181,7 @@ namespace VEPROMS
|
||||
private void infoPanel_Click(object sender, EventArgs e)
|
||||
{
|
||||
displayTags.MyEditItem = (SelectedStepTabPanel == null) ? null : SelectedStepTabPanel.MyStepPanel.SelectedEditItem;
|
||||
displayTags.Mydvi = SelectedDVI;
|
||||
}
|
||||
//private void tv_SectionShouldClose(object sender, vlnTreeSectionInfoEventArgs args)
|
||||
//{
|
||||
|
Reference in New Issue
Block a user