/// <summary>
        /// SetSharedUserData method implementation
        /// </summary>
        internal void SetSharedUserData(MMCRegistrationList registrations)
        {
            if (usersFormView == null)
            {
                return;
            }
            WritableSharedDataItem shareddata = usersFormView.SharedUserData.GetItem("@adfsmfa_useredit" + seed);

            if (shareddata == null)
            {
                return;
            }
            if (registrations == null)
            {
                registrations = (MMCRegistrationList)this.ParentSheet.SelectionObject;
                if (registrations == null)
                {
                    registrations = new MMCRegistrationList();
                    MMCRegistration reg = new MMCRegistration();
                    reg.Enabled = true;
                    registrations.Add(reg);
                }
            }
            shareddata.SetData(registrations);
        }
Example #2
0
        /// <summary>
        /// EnableUserStoreData method implementation
        /// </summary>
        private void EnableUserStoreData(object obj, bool enabled)
        {
            MMCRegistrationList reg = null;

            if (obj is MMCRegistrationList)
            {
                reg = (MMCRegistrationList)obj;
                if (UsersListControl != null)
                {
                    this.SelectionData.BeginUpdates();
                    try
                    {
                        if (enabled)
                        {
                            UsersListControl.EnableUserData(reg);
                        }
                        else
                        {
                            UsersListControl.DisableUserData(reg);
                        }
                    }
                    finally
                    {
                        this.SelectionData.EndUpdates();
                    }
                }
            }
        }
Example #3
0
 /// <summary>
 /// Defines actions for selection.
 /// </summary>
 /// <param name="status"></param>
 protected override void OnSelectionChanged(SyncStatus status)
 {
     this.SelectionData.BeginUpdates();
     try
     {
         if (this.SelectedNodes.Count == 0)
         {
             this.SelectionData.Clear();
         }
         else
         {
             var r = this.ResultNodes.IndexOf((ResultNode)this.SelectedNodes[0]);
             MMCRegistrationList regs = GetSelectedUsers();
             if (regs.Count > 0)
             {
                 SelectionData.Update(regs, this.SelectedNodes.Count > 1, null, null);
                 if (regs.Count == 1)
                 {
                     UpdateActionPanelItems(regs);
                     SelectionData.DisplayName = regs[0].UPN;
                 }
                 else
                 {
                     UpdateActionPanelItems(regs);
                     SelectionData.DisplayName = "Sélection multiple";
                 }
             }
         }
     }
     finally
     {
         this.SelectionData.EndUpdates();
     }
 }
Example #4
0
        /// <summary>
        /// Handle the selected action.
        /// </summary>
        protected override void OnSelectionAction(Microsoft.ManagementConsole.Action action, AsyncStatus status)
        {
            this.SelectionData.BeginUpdates();
            try
            {
                switch ((string)action.Tag)
                {
                case "EnableUser":
                {
                    MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                    EnableUserStoreData(reg, true);
                    break;
                }

                case "DisableUser":
                {
                    MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                    EnableUserStoreData(reg, false);
                    break;
                }
                }
            }
            finally
            {
                this.SelectionData.EndUpdates();
            }
        }
Example #5
0
        /// <summary>
        /// UpdateActionPanelItems method implmentation
        /// </summary>
        internal void UpdateActionPanelItems(MMCRegistrationList lst)
        {
            Nullable <bool> enb = null;

            SelectionData.ActionsPaneItems.Clear();
            foreach (MMCRegistration reg in lst)
            {
                if (!enb.HasValue)
                {
                    enb = reg.Enabled;
                }
                else if (enb.Value != reg.Enabled)
                {
                    enb = null;
                }
            }

            /* if (lst.Count==1)
             *   SelectionData.EnabledStandardVerbs = (StandardVerbs.Delete | StandardVerbs.Properties);
             * else if (lst.Count > 1)
             *   SelectionData.EnabledStandardVerbs = StandardVerbs.Delete; */
            if (enb.HasValue)
            {
                if (!enb.Value)
                {
                    SelectionData.ActionsPaneItems.Add(new Microsoft.ManagementConsole.Action("Activer", "Activer MFA pour l'utilisateur sélectionné.", -1, "EnableUser"));
                }
                else
                {
                    SelectionData.ActionsPaneItems.Add(new Microsoft.ManagementConsole.Action("Désactiver", "Désactiver MFA pour l'utilisateur sélectionné.", -1, "DisableUser"));
                }
            }
        }
 /// <summary>
 /// RefreshData method implmentation
 /// </summary>
 public void RefreshData(bool refreshgrid = false, bool clearselection = false)
 {
     this.UseWaitCursor = true;
     this.Cursor        = Cursors.WaitCursor;
     try
     {
         _lst = ManagementAdminService.GetUsers();
         if (clearselection)
         {
             this.GridView.RowCount = 0;
         }
         this.GridView.RowCount = ManagementAdminService.GetUsersCount();
         if (refreshgrid)
         {
             this.GridView.Refresh();
         }
         if (clearselection)
         {
             // this.GridView.ClearSelection();
         }
     }
     finally
     {
         this.UseWaitCursor = false;
         this.Cursor        = Cursors.Default;
     }
 }
Example #7
0
 /// <summary>
 /// UpdateNodes method implementation
 /// </summary>
 private void DeleteNodes(MMCRegistrationList registrations)
 {
     this.SelectionData.BeginUpdates();
     try
     {
         List <ResultNode> nds = new List <ResultNode>();
         RemoteAdminService.DeleteUser(registrations);
         foreach (MMCRegistration reg in registrations)
         {
             foreach (ResultNode res in this.ResultNodes)
             {
                 MMCRegistration xres = res;
                 if (reg.ID == xres.ID)
                 {
                     nds.Add(res);
                 }
             }
         }
         foreach (ResultNode res in nds)
         {
             ResultNodes.Remove(res);
         }
     }
     finally
     {
         this.SelectionData.EndUpdates();
     }
 }
Example #8
0
        /// <summary>
        /// OnDelete method implmentation
        /// </summary>
        protected override void OnDelete(SyncStatus status)
        {
            MessageBoxParameters messageBoxParameters = new MessageBoxParameters();

            messageBoxParameters.Caption       = "Multi-Factor Authentication";
            messageBoxParameters.Buttons       = MessageBoxButtons.YesNo;
            messageBoxParameters.DefaultButton = MessageBoxDefaultButton.Button1;
            messageBoxParameters.Icon          = MessageBoxIcon.Question;
            messageBoxParameters.Text          = "Voulez vous vraiment supprimer cet élément ?";

            if (this.SnapIn.Console.ShowDialog(messageBoxParameters) == DialogResult.Yes)
            {
                MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                bool res = DeleteUserStoreData(reg);
                if (res)
                {
                    status.Complete("ok", true);
                }
                else
                {
                    status.CanCancel = true;
                    status.Complete("error", false);
                }
            }
            else
            {
                status.CanCancel = true;
                base.OnDelete(status);
            }
        }
Example #9
0
        /// <summary>
        /// OnDelete method implmentation
        /// </summary>
        /// <param name="status"></param>
        protected override void OnDelete(SyncStatus status)
        {
            MessageBoxParameters messageBoxParameters = new MessageBoxParameters();

            messageBoxParameters.Caption       = "Multi-Factor Authentication";
            messageBoxParameters.Buttons       = MessageBoxButtons.YesNo;
            messageBoxParameters.DefaultButton = MessageBoxDefaultButton.Button1;
            messageBoxParameters.Icon          = MessageBoxIcon.Question;
            messageBoxParameters.Text          = "Voulez vous vraiment supprimer cet élément ?";

            this.SelectionData.BeginUpdates();
            try
            {
                if (this.SnapIn.Console.ShowDialog(messageBoxParameters) == DialogResult.Yes)
                {
                    MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                    DeleteNodes(reg);
                }
                else
                {
                    status.CanCancel = true;
                }
                base.OnDelete(status);
            }
            finally
            {
                this.SelectionData.EndUpdates();
            }
        }
Example #10
0
        /// <summary>
        /// Handle the selected action.
        /// </summary>
        protected override void OnSelectionAction(Microsoft.ManagementConsole.Action action, AsyncStatus status)
        {
            this.SelectionData.BeginUpdates();
            try
            {
                switch ((string)action.Tag)
                {
                case "EnableUser":
                {
                    MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                    reg = RemoteAdminService.EnableUser(reg);
                    UpdateNodes(reg);
                    break;
                }

                case "DisableUser":
                {
                    MMCRegistrationList reg = (MMCRegistrationList)SelectionData.SelectionObject;
                    reg = RemoteAdminService.DisableUser(reg);
                    UpdateNodes(reg);
                    break;
                }
                }
            }
            finally
            {
                this.SelectionData.EndUpdates();
            }
        }
 /// <summary>
 /// OnApply method implmentation
 /// </summary>
 /// <returns></returns>
 protected override bool OnApply()
 {
     if (Dirty)
     {
         MMCRegistrationList registrations = GetSharedUserData();
         foreach (MMCRegistration reg in registrations)
         {
             if (CanApplyDataChanges(reg))
             {
                 if (!reg.IsApplied)
                 {
                     if (isnew)
                     {
                         usersFormView.AddUserStoreData(registrations);
                     }
                     else
                     {
                         usersFormView.SetUserStoreData(registrations);
                     }
                 }
                 reg.IsApplied = true;
             }
             else
             {
                 reg.IsApplied = false;
                 return(false);
             }
         }
         SetSharedUserData(registrations);
         userPropertiesControl.SetUserControlData(registrations, true);
         return(true);
     }
     return(true);
 }
Example #12
0
        /// <summary>
        /// UpdateActionPanelItems method implmentation
        /// </summary>
        internal void UpdateActionPanelItems(MMCRegistrationList lst)
        {
            Nullable <bool> enb = null;

            SelectionData.ActionsPaneItems.Clear();
            foreach (MMCRegistration reg in lst)
            {
                if (!enb.HasValue)
                {
                    enb = reg.Enabled;
                }
                else if (enb.Value != reg.Enabled)
                {
                    enb = null;
                }
            }
            if (enb.HasValue)
            {
                if (!enb.Value)
                {
                    SelectionData.ActionsPaneItems.Add(new Microsoft.ManagementConsole.Action("Activer", "Activer MFA pour l'utilisateur sélectionné.", -1, "EnableUser"));
                }
                else
                {
                    SelectionData.ActionsPaneItems.Add(new Microsoft.ManagementConsole.Action("Désactiver", "Désactiver MFA pour l'utilisateur sélectionné.", -1, "DisableUser"));
                }
            }
        }
        /// <summary>
        /// DeleteUserData method implementation
        /// </summary>
        internal bool DeleteUserData(MMCRegistrationList registrations)
        {
            bool ret = ManagementAdminService.DeleteUser(registrations);

            DeleteRows(registrations);
            return(ret);
        }
 /// <summary>
 /// EnableDisableRows method implementation
 /// </summary>
 private void EnableDisableRows(MMCRegistrationList registrations)
 {
     RefreshData(true);
     if (this.DataSelectionChanged != null)
     {
         this.DataSelectionChanged(this, new SelectionDataEventArgs(GetSelectedUsers(), MMCListAction.SelectionChanged));
     }
 }
 /// <summary>
 /// GetUserControlData method implmentation
 /// </summary>
 public MMCRegistrationList GetUserControlData(MMCRegistrationList lst)
 {
     foreach (MMCRegistration obj in lst)
     {
         ((MMCRegistration)obj).Enabled         = this.cbEnabled.Checked;
         ((MMCRegistration)obj).PreferredMethod = (RegistrationPreferredMethod)((int)this.CBMethod.SelectedValue);
     }
     return(lst);
 }
Example #16
0
        /// <summary>
        /// Build a string of selected users.
        /// </summary>
        private MMCRegistrationList GetSelectedUsers()
        {
            MMCRegistrationList lst = new MMCRegistrationList();

            foreach (ResultNode resultNode in this.SelectedNodes)
            {
                lst.Add(resultNode);
            }
            return(lst);
        }
        /// <summary>
        /// LoadSharedUserData method implementation
        /// </summary>
        internal virtual void LoadSharedUserData(IUserPropertiesDataObject control, bool disablesync = false)
        {
            if (usersFormView == null)
            {
                return;
            }
            MMCRegistrationList registrations = GetSharedUserData();

            userPropertiesControl.SetUserControlData(registrations, disablesync);
        }
Example #18
0
        /// <summary>
        /// SetData method implmentation
        /// </summary>
        internal void SetUserStoreData(object obj)
        {
            MMCRegistrationList reg = null;

            if (obj is MMCRegistrationList)
            {
                reg = (MMCRegistrationList)obj;
                RemoteAdminService.SetUser(reg);
                UpdateNodes(reg);
            }
        }
Example #19
0
        internal void AddUserStoreData(object obj)
        {
            MMCRegistrationList reg = null;

            if (obj is MMCRegistrationList)
            {
                reg = (MMCRegistrationList)obj;
                reg = RemoteAdminService.AddUser(reg);
                AddNodes(reg);
            }
        }
Example #20
0
        /// <summary>
        /// GetData method implmentation
        /// </summary>
        public MMCRegistrationList GetUserControlData(MMCRegistrationList lst)
        {
            MMCRegistration obj = ((MMCRegistrationList)lst)[0];

            ((MMCRegistration)obj).UPN             = this.UserName.Text;
            ((MMCRegistration)obj).MailAddress     = this.Email.Text;
            ((MMCRegistration)obj).PhoneNumber     = this.Phone.Text;
            ((MMCRegistration)obj).Enabled         = this.cbEnabled.Checked;
            ((MMCRegistration)obj).PreferredMethod = (RegistrationPreferredMethod)((int)this.CBMethod.SelectedValue);
            return(lst);
        }
        /// <summary>
        /// BTNReinit_Click event
        /// </summary>
        private void BTNReinit_Click(object sender, EventArgs e)
        {
            MMCRegistrationList lst = userPropertyPage.GetSharedUserData();

            foreach (MMCRegistration reg in lst)
            {
                KeysManager.NewKey(reg.UPN);
            }
            if (!SyncDisabled)
            {
                userPropertyPage.SyncSharedUserData(this, true);
            }
        }
        /// <summary>
        /// SetUser method implementation
        /// </summary>
        public static void SetUser(MMCRegistrationList registrations)
        {
            EnsureService();
            IAdministrationService svc = null;
            if (!Config.UseActiveDirectory)
                svc = new SQLAdminService(Config);
            else
                svc = new ADDSAdminService(Config);

            foreach (MMCRegistration reg in registrations)
            {
                svc.SetUserRegistration(reg);
            }
        }
        /// <summary>
        /// EnableUser method implmentation
        /// </summary>
        public static MMCRegistrationList EnableUser(MMCRegistrationList registrations)
        {
            EnsureService();
            IAdministrationService svc = null;
            if (!Config.UseActiveDirectory)
                svc = new SQLAdminService(Config);
            else
                svc = new ADDSAdminService(Config);

            MMCRegistrationList lst = new MMCRegistrationList();
            foreach(MMCRegistration reg in registrations)
            {
                lst.Add(svc.EnableUserRegistration(reg));
            }
            return lst;
        }
Example #24
0
        /// <summary>
        /// OnAddPropertyPages method implementation
        /// </summary>
        protected override void OnAddPropertyPages(PropertyPageCollection propertyPageCollection)
        {
            Random rand = new Random();
            int    i    = rand.Next();
            MMCRegistrationList registrations = (MMCRegistrationList)SelectionData.SelectionObject;

            if (registrations.Count > 1)
            {
                propertyPageCollection.Add(new UserPropertyPage(this, typeof(UserCommonPropertiesControl), i));
            }
            else
            {
                propertyPageCollection.Add(new UserPropertyPage(this, typeof(UserPropertiesControl), i));
                propertyPageCollection.Add(new UserPropertyPage(this, typeof(UserPropertiesKeysControl), i));
            }
        }
Example #25
0
 /// <summary>
 /// Populate the list with the sample data.
 /// </summary>
 /// <param name="users"></param>
 public void RefreshData(MMCRegistrationList users)
 {
     this.SelectionData.BeginUpdates();
     try
     {
         this.ResultNodes.Clear();
         foreach (MMCRegistration user in users)
         {
             this.ResultNodes.Add(user);
         }
     }
     finally
     {
         this.SelectionData.EndUpdates();
     }
 }
        /// <summary>
        /// GetUser method implementation
        /// </summary>
        internal static MMCRegistrationList GetUser(MMCRegistrationList registrations)
        {
            EnsureService();
            IAdministrationService svc = null;
            if (!Config.UseActiveDirectory)
               svc = new SQLAdminService(Config);
            else
               svc = new ADDSAdminService(Config);

            MMCRegistrationList lst = new MMCRegistrationList();
            foreach(MMCRegistration reg in registrations)
            {
                MMCRegistration ret = svc.GetUserRegistration(reg.UPN);
                lst.Add(ret);
            }
            return lst;
        }
Example #27
0
 /// <summary>
 /// SetData method implmentation
 /// </summary>
 public void SetUserControlData(MMCRegistrationList lst, bool disablesync)
 {
     SyncDisabled = disablesync;
     try
     {
         MMCRegistration obj = ((MMCRegistrationList)lst)[0];
         this.UserName.Text          = ((MMCRegistration)obj).UPN;
         this.Email.Text             = ((MMCRegistration)obj).MailAddress;
         this.Phone.Text             = ((MMCRegistration)obj).PhoneNumber;
         this.cbEnabled.Checked      = ((MMCRegistration)obj).Enabled;
         this.CBMethod.SelectedValue = (UsersPreferredMethod)(((MMCRegistration)obj).PreferredMethod);
     }
     finally
     {
         SyncDisabled = false;
     }
 }
        /// <summary>
        /// AddUser method implmentation
        /// </summary>
        public static MMCRegistrationList AddUser(MMCRegistrationList registrations)
        {
            EnsureService();
            IAdministrationService svc = null;
            if (!Config.UseActiveDirectory)
                svc = new SQLAdminService(Config);
            else
                svc = new ADDSAdminService(Config);

            MMCRegistrationList lst = new MMCRegistrationList();
            foreach(MMCRegistration reg in registrations)
            {
                KeysManager.NewKey(reg.UPN);
                MMCRegistration ret = svc.AddUserRegistration(reg);
                lst.Add(ret);
            }
            return lst;
        }
        /// <summary>
        /// DeleteUser method implmentation
        /// </summary>
        public static bool DeleteUser(MMCRegistrationList registrations)
        {
            EnsureService();
            bool _ret = true;
            IAdministrationService svc = null;
            if (!Config.UseActiveDirectory)
                svc = new SQLAdminService(Config);
            else
                svc = new ADDSAdminService(Config);

            foreach(MMCRegistration reg in registrations)
            {
                bool ret = svc.DeleteUserRegistration(reg);
                if (!ret)
                    _ret = false;
                KeysManager.RemoveKey(reg.UPN);
            }
            return _ret;
        }
        /// <summary>
        /// BTNSendByMail_Click event
        /// </summary>
        private void BTNSendByMail_Click(object sender, EventArgs e)
        {
            Cursor crs = this.Cursor;

            try
            {
                this.Cursor = Cursors.WaitCursor;
                MMCRegistrationList lst = userPropertyPage.GetSharedUserData();
                foreach (MMCRegistration reg in lst)
                {
                    string secret = KeysManager.EncodedKey(reg.UPN);
                    ManagementAdminService.SendKeyByEmail(reg.MailAddress, reg.UPN, secret);
                }
            }
            finally
            {
                this.Cursor = crs;
            }
        }