Esempio n. 1
0
        private void butSetAll_Click(object sender, EventArgs e)
        {
            GroupPermission perm;

            for (int i = 0; i < Enum.GetNames(typeof(Permissions)).Length; i++)
            {
                if (i == (int)Permissions.SecurityAdmin ||
                    i == (int)Permissions.StartupMultiUserOld ||
                    i == (int)Permissions.StartupSingleUserOld)
                {
                    continue;
                }
                perm = GroupPermissions.GetPerm(SelectedGroupNum, (Permissions)i);
                if (perm == null)
                {
                    perm              = new GroupPermission();
                    perm.PermType     = (Permissions)i;
                    perm.UserGroupNum = SelectedGroupNum;
                    try{
                        GroupPermissions.InsertOrUpdate(perm, true);
                    }
                    catch (Exception ex) {
                        MessageBox.Show(ex.Message);
                    }
                    changed = true;
                }
            }
            FillTreePerm();
        }
Esempio n. 2
0
        private void treePermissions_DoubleClick(object sender, System.EventArgs e)
        {
            if (clickedPermNode == null)
            {
                return;
            }
            Permissions permType = (Permissions)clickedPermNode.Tag;

            if (!GroupPermissions.PermTakesDates(permType))
            {
                return;
            }
            GroupPermission perm = GroupPermissions.GetPerm(SelectedGroupNum, (Permissions)clickedPermNode.Tag);

            if (perm == null)
            {
                return;
            }
            FormGroupPermEdit FormG = new FormGroupPermEdit(perm);

            FormG.ShowDialog();
            if (FormG.DialogResult == DialogResult.Cancel)
            {
                return;
            }
            FillTreePerm();
            changed = true;
        }
Esempio n. 3
0
        private void butSetAll_Click(object sender, EventArgs e)
        {
            if (gridMain.SelectedIndices.Length == 0)
            {
                MsgBox.Show(this, "Please select user first.");
                return;
            }
            GroupPermission perm;

            for (int i = 0; i < Enum.GetNames(typeof(Permissions)).Length; i++)
            {
                if (i == (int)Permissions.SecurityAdmin ||
                    i == (int)Permissions.StartupMultiUserOld ||
                    i == (int)Permissions.StartupSingleUserOld ||
                    i == (int)Permissions.EhrKeyAdd)
                {
                    continue;
                }
                perm = GroupPermissions.GetPerm(SelectedGroupNum, (Permissions)i);
                if (perm == null)
                {
                    perm              = new GroupPermission();
                    perm.PermType     = (Permissions)i;
                    perm.UserGroupNum = SelectedGroupNum;
                    try{
                        GroupPermissions.Insert(perm);
                    }
                    catch (Exception ex) {
                        MessageBox.Show(ex.Message);
                    }
                    changed = true;
                }
            }
            FillTreePerm();
        }
        ///<summary>Allows users to edit the date locks on specific permissions.
        ///Does nothing if in ReadOnly mode or if more than one UserGroup is selected.</summary>
        private void treePermissions_DoubleClick(object sender, System.EventArgs e)
        {
            if (ReadOnly || _listUserGroupNums.Count != 1)
            {
                return;
            }
            if (_clickedPermNode == null)
            {
                return;
            }
            Permissions permType = (Permissions)_clickedPermNode.Tag;

            if (!GroupPermissions.PermTakesDates(permType))
            {
                return;
            }
            GroupPermission perm = GroupPermissions.GetPerm(_listUserGroupNums.First(), (Permissions)_clickedPermNode.Tag);

            if (perm == null)
            {
                return;
            }
            //Call an event that bubbles back up to the calling Form. The event returns a dialog result so we know how to continue here.
            DialogResult result = GroupPermissionChecked?.Invoke(sender, new SecurityEventArgs(perm)) ?? DialogResult.Cancel;

            if (result == DialogResult.Cancel)
            {
                return;
            }
            FillTreePerm();
        }
        ///<summary>Gives the current usergroup all permissions. There should only be one usergroup selected when this is called.  Throws exceptions.</summary>
        public void SetAll()
        {
            if (_listUserGroupNums.Count != 1)
            {
                throw new Exception("SetAll may not be called when multiple usergroups are selected.");
            }
            GroupPermission perm;

            for (int i = 0; i < Enum.GetNames(typeof(Permissions)).Length; i++)
            {
                if (i == (int)Permissions.SecurityAdmin ||
                    i == (int)Permissions.StartupMultiUserOld ||
                    i == (int)Permissions.StartupSingleUserOld ||
                    i == (int)Permissions.EhrKeyAdd)
                {
                    continue;
                }
                perm = GroupPermissions.GetPerm(_listUserGroupNums.First(), (Permissions)i);
                if (perm == null)
                {
                    perm              = new GroupPermission();
                    perm.PermType     = (Permissions)i;
                    perm.UserGroupNum = _listUserGroupNums.First();
                    try {
                        GroupPermissions.Insert(perm);
                    }
                    catch (Exception ex) {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
            //add all the report permissions as well
            List <DisplayReport> _listDisplayReportAll = DisplayReports.GetAll(false);

            foreach (DisplayReport report in _listDisplayReportAll)
            {
                if (GroupPermissions.HasPermission(_listUserGroupNums.First(), Permissions.Reports, report.DisplayReportNum))
                {
                    continue;                     //don't bother creating or adding the permission if the usergroup already has it.
                }
                perm              = new GroupPermission();
                perm.NewerDate    = DateTime.MinValue;
                perm.NewerDays    = 0;
                perm.PermType     = Permissions.Reports;
                perm.UserGroupNum = _listUserGroupNums.First();
                perm.FKey         = report.DisplayReportNum;
                try {
                    GroupPermissions.Insert(perm);
                }
                catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
            FillTreePerm();
        }
 ///<summary>Toggles permissions based on the node the user has clicked.
 ///Will do nothing if in Read-Only mode or more than one usergroup is selected.</summary>
 private void treePermissions_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     if (ReadOnly || _listUserGroupNums.Count != 1)
     {
         return;
     }
     _clickedPermNode = treePermissions.GetNodeAt(e.X, e.Y);
     if (_clickedPermNode == null)
     {
         return;
     }
     //Do nothing if the user didn't click on a check box.
     if (_clickedPermNode.Parent == null)           //level 1
     {
         if (e.X < 5 || e.X > 17)
         {
             return;
         }
     }
     else if (_clickedPermNode.Parent.Parent == null)           //level 2
     {
         if (e.X < 24 || e.X > 36)
         {
             return;
         }
     }
     else if (_clickedPermNode.Parent.Parent.Parent == null)           //level 3
     {
         if (e.X < 43 || e.X > 55)
         {
             return;
         }
     }
     //User clicked on a check box.  Do stuff.
     if (_clickedPermNode.ImageIndex == 1)           //unchecked, so need to add a permission
     {
         GroupPermission perm = new GroupPermission();
         perm.PermType     = (Permissions)_clickedPermNode.Tag;
         perm.UserGroupNum = _listUserGroupNums.First();
         if (GroupPermissions.PermTakesDates(perm.PermType))
         {
             perm.IsNew = true;
             //Call an event that bubbles back up to the calling Form. The event returns a dialog result so we know how to continue here.
             DialogResult result = GroupPermissionChecked?.Invoke(sender, new SecurityEventArgs(perm)) ?? DialogResult.Cancel;
             if (result == DialogResult.Cancel)
             {
                 treePermissions.EndUpdate();
                 return;
             }
         }
         else if (perm.PermType == Permissions.Reports)               //Reports permission is being checked.
         //Call an event that bubbles back up to the calling Form. The event returns a dialog result so we know how to continue here.
         {
             DialogResult result = ReportPermissionChecked?.Invoke(sender, new SecurityEventArgs(perm)) ?? DialogResult.Cancel;
             if (result == DialogResult.Cancel)
             {
                 treePermissions.EndUpdate();
                 return;
             }
         }
         else
         {
             try {
                 GroupPermissions.Insert(perm);
                 SecurityLogs.MakeLogEntry(Permissions.SecurityAdmin, 0, "Permission '" + perm.PermType + "' granted to '"
                                           + UserGroups.GetGroup(perm.UserGroupNum).Description + "'");
             }
             catch (Exception ex) {
                 MessageBox.Show(ex.Message);
                 return;
             }
         }
         if (perm.PermType.In(Permissions.ProcComplEdit, Permissions.ProcExistingEdit))
         {
             //Adding ProcComplEdit full, so add ProcComplEditlimited too.
             //Do the same for EO and EC procs
             GroupPermission permLimited = GroupPermissions.GetPerm(_listUserGroupNums.First(), Permissions.ProcComplEditLimited);
             if (permLimited == null)
             {
                 GroupPermissions.RefreshCache();                        //refresh NewerDays/Date to add the same for ProcComplEditLimited
                 perm                     = GroupPermissions.GetPerm(_listUserGroupNums.First(), perm.PermType);
                 permLimited              = new GroupPermission();
                 permLimited.NewerDate    = perm.NewerDate;
                 permLimited.NewerDays    = perm.NewerDays;
                 permLimited.UserGroupNum = perm.UserGroupNum;
                 permLimited.PermType     = Permissions.ProcComplEditLimited;
                 try {
                     GroupPermissions.Insert(permLimited);
                     SecurityLogs.MakeLogEntry(Permissions.SecurityAdmin, 0, "Permission '" + perm.PermType + "' granted to '"
                                               + UserGroups.GetGroup(perm.UserGroupNum).Description + "'");
                 }
                 catch (Exception ex) {
                     MessageBox.Show(ex.Message);
                     return;
                 }
             }
         }
     }
     else if (_clickedPermNode.ImageIndex == 2)           //checked, so need to delete the perm
     {
         try {
             GroupPermissions.RemovePermission(_listUserGroupNums.First(), (Permissions)_clickedPermNode.Tag);
             SecurityLogs.MakeLogEntry(Permissions.SecurityAdmin, 0, "Permission '" + _clickedPermNode.Tag + "' revoked from '"
                                       + UserGroups.GetGroup(_listUserGroupNums.First()).Description + "'");
         }
         catch (Exception ex) {
             MessageBox.Show(ex.Message);
             return;
         }
         if ((Permissions)_clickedPermNode.Tag == Permissions.ProcComplEditLimited)
         {
             //Deselecting ProcComplEditLimted, deselect ProcComplEdit and ProcExistingEdit permissions if present.
             List <Permissions> listPermissions = new List <Permissions>();
             if (GroupPermissions.HasPermission(_listUserGroupNums.First(), Permissions.ProcComplEdit, 0))
             {
                 listPermissions.Add(Permissions.ProcComplEdit);
             }
             if (GroupPermissions.HasPermission(_listUserGroupNums.First(), Permissions.ProcExistingEdit, 0))
             {
                 listPermissions.Add(Permissions.ProcExistingEdit);
             }
             listPermissions.ForEach(x => {
                 try {
                     GroupPermissions.RemovePermission(_listUserGroupNums.First(), x);
                     SecurityLogs.MakeLogEntry(Permissions.SecurityAdmin, 0, "Permission '" + _clickedPermNode.Tag + "' revoked from '"
                                               + UserGroups.GetGroup(_listUserGroupNums.First()).Description + "'");
                 }
                 catch (Exception ex) {
                     MessageBox.Show(ex.Message);
                     return;
                 }
             });
         }
     }
     else if (_clickedPermNode.ImageIndex == 3)           //Partially checked (currently only applies to Reports permission)
     {
         try {
             GroupPermissions.RemovePermission(_listUserGroupNums.First(), (Permissions)_clickedPermNode.Tag);
             SecurityLogs.MakeLogEntry(Permissions.SecurityAdmin, 0, "Permission '" + _clickedPermNode.Tag + "' revoked from '"
                                       + UserGroups.GetGroup(_listUserGroupNums.First()).Description + "'");
         }
         catch (Exception ex) {
             MessageBox.Show(ex.Message);
             return;
         }
     }
     if ((Permissions)_clickedPermNode.Tag == Permissions.AccountProcsQuickAdd)
     {
         string programName = PrefC.GetString(PrefName.SoftwareName);
         MsgBox.Show(this, programName + " needs to be restarted on workstations before the changes will take place.");
     }
     FillTreePerm();
 }