181 lines · 7.2 KB · C#
RawDownload
//******************************************************************************************************//  SecurityUserControl.xaml.cs - Gbtc////  Copyright © 2010, Grid Protection Alliance.  All Rights Reserved.////  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See//  the NOTICE file distributed with this work for additional information regarding copyright ownership.//  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may//  not use this file except in compliance with the License. You may obtain a copy of the License at:////      http://www.opensource.org/licenses/MIT////  Unless agreed to in writing, the subject software distributed under the License is distributed on an//  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the//  License for the specific language governing permissions and limitations.////  Code Modification History://  ----------------------------------------------------------------------------------------------------//  05/10/2011 - Mehulbhai P Thakkar//       Generated original version of source code.////****************************************************************************************************** using System;using System.ComponentModel;using System.Text.RegularExpressions;using System.Windows;using System.Windows.Controls;using GSF.Configuration;using GSF.Security;using GSF.TimeSeries.UI.ViewModels; namespace GSF.TimeSeries.UI.UserControls{    /// <summary>    /// Interaction logic for SecurityUserControl.xaml    /// </summary>    public partial class SecurityUserControl : UserControl    {        #region [ Members ]         // Fields        private UserAccounts m_userAccounts;        private SecurityGroups m_securityGroups;        private ApplicationRoles m_applicationRoles;        private string m_passwordRequirementsRegex;        private string m_passwordRequirementsError;         #endregion         #region [ Constructor ]         /// <summary>        /// Creates an instance of <see cref="SecurityUserControl"/> class.        /// </summary>        public SecurityUserControl()        {            ConfigurationFile config;            CategorizedSettingsElementCollection settings;             InitializeComponent();             config = ConfigurationFile.Current;            settings = config.Settings["securityProvider"];             // Set up defaults for config file settings            m_passwordRequirementsRegex = AdoSecurityProvider.DefaultPasswordRequirementsRegex;            m_passwordRequirementsError = AdoSecurityProvider.DefaultPasswordRequirementsError;             // Make sure default config file settings exist            settings.Add("PasswordRequirementsRegex", m_passwordRequirementsRegex, "Regular expression used to validate new passwords for database users.");            settings.Add("PasswordRequirementsError", m_passwordRequirementsError, "Error message to be displayed when new database user password fails regular expression test.");             // Read settings from config file            m_passwordRequirementsRegex = settings["PasswordRequirementsRegex"].ValueAs(m_passwordRequirementsRegex);            m_passwordRequirementsError = settings["PasswordRequirementsError"].ValueAs(m_passwordRequirementsError);             // Initialize view models            m_userAccounts = new UserAccounts(1, false);            m_securityGroups = new SecurityGroups(1, false);            m_applicationRoles = new ApplicationRoles(1, true);             RefreshBindings();             // Attach to events            Unloaded += SecurityUserControl_Unloaded;            m_userAccounts.BeforeSave += m_userAccounts_BeforeSave;            m_userAccounts.Saved += m_userAccounts_Changed;            m_userAccounts.Deleted += m_userAccounts_Changed;            m_securityGroups.Saved += m_securityGroups_Changed;            m_securityGroups.Deleted += m_securityGroups_Changed;        }         #endregion         #region [ Methods ]         private void m_userAccounts_BeforeSave(object sender, CancelEventArgs e)        {            m_userAccounts.CurrentItem.UseADAuthentication = RadioButtonWindows.IsChecked.GetValueOrDefault();             if (m_userAccounts.IsNewRecord)            {                if (RadioButtonDatabase.IsChecked.GetValueOrDefault())                {                    if (string.IsNullOrEmpty(TextBoxPassword.Password) || !Regex.IsMatch(TextBoxPassword.Password, m_passwordRequirementsRegex))                    {                        MessageBox.Show(m_passwordRequirementsError, "Invalid Password", MessageBoxButton.OK);                        e.Cancel = true;                    }                    else                    {                        m_userAccounts.CurrentItem.Password = SecurityProviderUtility.EncryptPassword(TextBoxPassword.Password);                    }                }            }            else            {                if (!string.IsNullOrEmpty(TextBoxPassword.Password))                {                    if (Regex.IsMatch(TextBoxPassword.Password, m_passwordRequirementsRegex))                    {                        m_userAccounts.CurrentItem.Password = SecurityProviderUtility.EncryptPassword(TextBoxPassword.Password);                    }                    else                    {                        MessageBox.Show("Please provide valid password value or leave it blank to retain old password." + Environment.NewLine + m_passwordRequirementsError, "Invalid Password", MessageBoxButton.OK);                        e.Cancel = true;                    }                }            }        }         private void SecurityUserControl_Unloaded(object sender, RoutedEventArgs e)        {            try            {                if (m_userAccounts != null)                {                    m_userAccounts.BeforeSave -= m_userAccounts_BeforeSave;                    m_userAccounts.Saved -= m_userAccounts_Changed;                    m_userAccounts.Deleted -= m_userAccounts_Changed;                }                if (m_securityGroups != null)                {                    m_securityGroups.Saved -= m_securityGroups_Changed;                    m_securityGroups.Deleted -= m_securityGroups_Changed;                }            }            finally            {                m_userAccounts = null;                m_securityGroups = null;                m_applicationRoles = null;            }        }         private void m_securityGroups_Changed(object sender, EventArgs e)        {            m_applicationRoles = new ApplicationRoles(1, true);            RefreshBindings();        }         private void m_userAccounts_Changed(object sender, EventArgs e)        {            TextBoxPassword.Password = string.Empty;            m_securityGroups = new SecurityGroups(1, false);            m_applicationRoles = new ApplicationRoles(1, true);            RefreshBindings();        }         private void RefreshBindings()        {            GroupBoxManageUsers.DataContext = m_userAccounts;            GroupBoxManageGroups.DataContext = m_securityGroups;            GroupBoxManageRoles.DataContext = m_applicationRoles;        }         #endregion    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t