/// <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); }
/// <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(); } } } }
/// <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(); } }
/// <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(); } }
/// <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; } }
/// <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(); } }
/// <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); } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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); }
/// <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); } }
internal void AddUserStoreData(object obj) { MMCRegistrationList reg = null; if (obj is MMCRegistrationList) { reg = (MMCRegistrationList)obj; reg = RemoteAdminService.AddUser(reg); AddNodes(reg); } }
/// <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; }
/// <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)); } }
/// <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; }
/// <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; } }