/// <summary>
        /// Get the current DB data and fill
        /// the fields with them
        /// </summary>
        public void BindFields()
        {
            if (UserId < 0)
            {
                ViewState["UserName"]           = string.Empty;
                UserNameTextBox.Text            = string.Empty;
                FirstNameTextBox.Text           = string.Empty;
                LastNameTextBox.Text            = string.Empty;
                EmailTextBox.Text               = string.Empty;
                NSurveyUserPlaceHolder.Visible  = true;
                IsAdminCheckBox.Checked         = false;
                HasSurveyAccessCheckBox.Checked = false;
                SurveysListBox.Enabled          = false;
                UserSurveysListBox.Enabled      = false;

                return;
            }

            // Check if we can edit extended properties
            if (_userProvider is INSurveyUserProvider)
            {
                NSurveyUserPlaceHolder.Visible = true;

                // Retrieve the user data
                NSurveyUserData          userData = new Users().GetUserById(UserId);
                NSurveyUserData.UsersRow user     = userData.Users[0];
                ViewState["UserName"] = user.UserName;
                UserNameTextBox.Text  = user.UserName;
                FirstNameTextBox.Text = user.FirstName;
                LastNameTextBox.Text  = user.LastName;
                EmailTextBox.Text     = user.Email;
                // attempt to repopulate the PWTB
                //PasswordTextBox.Text = user.Password;
            }
            else
            {
                NSurveyUserPlaceHolder.Visible = false;
            }

            UserSettingData userSettings = new Users().GetUserSettings(UserId);

            if (userSettings.UserSettings.Rows.Count > 0)
            {
                IsAdminCheckBox.Checked         = userSettings.UserSettings[0].IsAdmin;
                HasSurveyAccessCheckBox.Checked = userSettings.UserSettings[0].GlobalSurveyAccess;
            }
            else
            {
                IsAdminCheckBox.Checked         = false;
                HasSurveyAccessCheckBox.Checked = false;
            }
            SurveysListBox.Enabled     = !HasSurveyAccessCheckBox.Checked;
            UserSurveysListBox.Enabled = !HasSurveyAccessCheckBox.Checked;
            BindSurveyDropDownLists();
        }
Exemplo n.º 2
0
        private void ImportUsersButton_Click(object sender, System.EventArgs e)
        {
            Regex re = new Regex(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                                 @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                                 @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");

            string[] users = ImportUsersTextBox.Text.Split('\n');
            for (int i = 0; i < users.Length; i++)
            {
                string[] user = users[i].Split(',');
                if (user.Length > 4 && user[0].Trim().Length > 0 && user[1].Trim().Length > 0)
                {
                    // Check if user already exists in the db
                    if (new Users().GetUserByIdFromUserName(user[0]) == -1)
                    {
                        NSurveyUserData          userData = new NSurveyUserData();
                        NSurveyUserData.UsersRow newUser  = userData.Users.NewUsersRow();
                        newUser.UserName = user[0].Trim();
                        newUser.Password = new User().EncryptUserPassword(user[1].Trim());
                        newUser.Email    = user[4].Length > 0 && re.IsMatch(user[4].Trim()) ?
                                           user[4].Trim() : null;
                        newUser.FirstName = user[3].Length > 0 ? user[3].Trim() : null;
                        newUser.LastName  = user[2].Length > 0 ? user[2].Trim() : null;
                        userData.Users.Rows.Add(newUser);
                        ((INSurveyUserProvider)_userProvider).AddUser(userData);

                        AddUserSettings(userData.Users[0].UserId);
                        AddUserRoles(userData.Users[0].UserId);
                        if (!HasSurveyAccessCheckBox.Checked)
                        {
                            AddUserSurveys(userData.Users[0].UserId);
                        }
                    }
                }
            }

            MessageLabel.Visible = true;
            ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("UserImportedMessage"));
            ImportUsersTextBox.Text = string.Empty;
            UserRolesListBox.Items.Clear();
            UserSurveysListBox.Items.Clear();
            BindSurveyDropDownLists();
        }
        private void CreateUserButton_Click(object sender, System.EventArgs e)
        {
            if (ValidateFieldOptions())
            {
                NSurveyUserData          userData = new NSurveyUserData();
                NSurveyUserData.UsersRow newUser  = userData.Users.NewUsersRow();

                if (_userProvider is INSurveyUserProvider)
                {
                    //if (PasswordTextBox.Text.Length == 0)
                    if (!Regex.IsMatch(PasswordTextBox.Text, @"(?=^.{8,12}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&amp;*()_+}{&quot;:;'?/&gt;.&lt;,])(?!.*\s).*$"))

                    {
                        MessageLabel.Visible = true;
                        ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("PasswordRequiredMessage"));
                        return;
                    }

                    newUser.UserName = UserNameTextBox.Text;
                    var sec = new LoginSecurity();
                    newUser.PasswordSalt = sec.CreateSaltKey(5);
                    newUser.Password     = sec.CreatePasswordHash(PasswordTextBox.Text, newUser.PasswordSalt);
                    newUser.Email        = EmailTextBox.Text;
                    newUser.FirstName    = FirstNameTextBox.Text;
                    newUser.LastName     = LastNameTextBox.Text;
                    userData.Users.Rows.Add(newUser);
                    ((INSurveyUserProvider)_userProvider).AddUser(userData);
                }

                if (userData.Users.Rows.Count > 0)
                {
                    UserSettingData userSettings = new UserSettingData();
                    UserSettingData.UserSettingsRow newUserSettings = userSettings.UserSettings.NewUserSettingsRow();
                    newUserSettings.UserId             = userData.Users[0].UserId;
                    newUserSettings.IsAdmin            = IsAdminCheckBox.Checked;
                    newUserSettings.GlobalSurveyAccess = HasSurveyAccessCheckBox.Checked;
                    userSettings.UserSettings.Rows.Add(newUserSettings);
                    new User().AddUserSettings(userSettings);
                }
                UINavigator.NavigateToUserManager(((PageBase)Page).getSurveyId(), ((PageBase)Page).MenuIndex);
            }
        }
        private void ApplyChangesButton_Click(object sender, System.EventArgs e)
        {
            if (ValidateFieldOptions())
            {
                if (new Users().IsAdministrator(UserId) && !IsAdminCheckBox.Checked && new Users().GetAdminCount() == 1)
                {
                    MessageLabel.Visible = true;
                    ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("CannotDeleteLastAdminMessage"));
                    return;
                }

                if (_userProvider is INSurveyUserProvider)
                {
                    NSurveyUserData          userData    = new NSurveyUserData();
                    NSurveyUserData.UsersRow updatedUser = userData.Users.NewUsersRow();
                    updatedUser.UserId   = UserId;
                    updatedUser.UserName = UserNameTextBox.Text;

                    // if no password was specified the old one will be kept
                    if (PasswordTextBox.Text.Length > 0)
                    {
                        if (!Regex.IsMatch(PasswordTextBox.Text, @"(?=^.{8,12}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&amp;*()_+}{&quot;:;'?/&gt;.&lt;,])(?!.*\s).*$"))
                        {
                            MessageLabel.Visible = true;
                            ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("PasswordRequiredMessage"));
                            return;
                        }
                        else
                        {
                            var sec = new LoginSecurity();
                            updatedUser.PasswordSalt = sec.CreateSaltKey(5);
                            updatedUser.Password     = sec.CreatePasswordHash(PasswordTextBox.Text, updatedUser.PasswordSalt);
                        }
                    }
                    else
                    {
                        updatedUser.Password     = null;
                        updatedUser.PasswordSalt = null;
                    }

                    updatedUser.Email     = EmailTextBox.Text;
                    updatedUser.FirstName = FirstNameTextBox.Text;
                    updatedUser.LastName  = LastNameTextBox.Text;
                    userData.Users.Rows.Add(updatedUser);
                    ((INSurveyUserProvider)_userProvider).UpdateUser(userData);
                }

                UserSettingData userSettings = new UserSettingData();
                UserSettingData.UserSettingsRow newUserSettings = userSettings.UserSettings.NewUserSettingsRow();
                newUserSettings.UserId             = UserId;
                newUserSettings.IsAdmin            = IsAdminCheckBox.Checked;
                newUserSettings.GlobalSurveyAccess = HasSurveyAccessCheckBox.Checked;
                userSettings.UserSettings.Rows.Add(newUserSettings);
                new User().UpdateUserSettings(userSettings);

                // Notifiy containers that data has changed
                OnOptionChanged();

                BindSurveyDropDownLists();
                MessageLabel.Visible = true;
                ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("UserUpdatedMessage"));
            }
        }
Exemplo n.º 5
0
        protected void ImportUsersButton_Click(object sender, EventArgs e)
        {
            Regex re = new Regex(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                                 @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                                 @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
            int importCount = 0;
            var sec         = new LoginSecurity();

            if (ImportUserMatrixFile.HasFile)
            {
                try {
                    var workPart  = SpreadsheetDocument.Open(ImportUserMatrixFile.FileContent, false).WorkbookPart;
                    var sheetData = workPart.WorksheetParts.First().Worksheet.Elements <SheetData>().First();
                    foreach (var row in sheetData.Elements <Row>())
                    {
                        if (row.RowIndex > 0)
                        {
                            var cells = row.Descendants <Cell>().ToList();
                            if (cells.Count >= 5)
                            {
                                string username = ReadExcelCell(cells[0], workPart);
                                if (new Users().GetUserByIdFromUserName(username) == -1)
                                {
                                    NSurveyUserData          userData = new NSurveyUserData();
                                    NSurveyUserData.UsersRow newUser  = userData.Users.NewUsersRow();
                                    newUser.UserName = username.Trim();

                                    string password = "******";

                                    newUser.PasswordSalt = sec.CreateSaltKey(5);
                                    newUser.Password     = sec.CreatePasswordHash(password, newUser.PasswordSalt);
                                    string email = ReadExcelCell(cells[1], workPart);
                                    newUser.Email = email.Length > 0 && re.IsMatch(email.Trim()) ?
                                                    email.Trim() : null;
                                    if (cells.Count >= 6)
                                    {
                                        newUser.FirstName = ReadExcelCell(cells[5], workPart);
                                    }
                                    if (cells.Count >= 7)
                                    {
                                        newUser.LastName = ReadExcelCell(cells[6], workPart);
                                    }
                                    userData.Users.Rows.Add(newUser);
                                    ((INSurveyUserProvider)_userProvider).AddUser(userData);
                                    if (userData.Users[0].UserId > 0)
                                    {
                                        importCount++;
                                        //TODO: add user group
                                        AddUserSettings(userData.Users[0].UserId);
                                        AddUserRoles(userData.Users[0].UserId);
                                        new Survey().AssignUserToSurvey(int.Parse(ReadExcelCell(cells[2], workPart)), userData.Users[0].UserId);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex) {
                    ((PageBase)Page).ShowErrorMessage(MessageLabel, ex.Message);
                }
            }
            string[] users = "".Split('\n'); //ImportUsersTextBox.Text.Split('\n');


            //for (int i = 0; i < users.Length; i++)
            //{
            //    string[] user = users[i].Split(',');
            //    if (user.Length > 4 && user[0].Trim().Length > 0 && user[1].Trim().Length > 0)
            //    {
            //        // Check if user already exists in the db
            //        if (new Users().GetUserByIdFromUserName(user[0]) == -1)
            //        {
            //            NSurveyUserData userData = new NSurveyUserData();
            //            NSurveyUserData.UsersRow newUser = userData.Users.NewUsersRow();
            //            newUser.UserName = user[0].Trim();

            //            string password = user[1].Trim();

            //            newUser.PasswordSalt =sec.CreateSaltKey(5);
            //            newUser.Password = sec.CreatePasswordHash(password, newUser.PasswordSalt);

            //            newUser.Email = user[4].Length > 0 && re.IsMatch(user[4].Trim()) ?
            //                user[4].Trim() : null;
            //            newUser.FirstName = user[3].Length > 0 ? user[3].Trim() : null;
            //            newUser.LastName = user[2].Length > 0 ? user[2].Trim() : null;
            //            userData.Users.Rows.Add(newUser);
            //            ((INSurveyUserProvider)_userProvider).AddUser(userData);
            //            if (userData.Users[0].UserId > 0) importCount++;
            //            AddUserSettings(userData.Users[0].UserId);
            //            AddUserRoles(userData.Users[0].UserId);
            //            //if (!HasSurveyAccessCheckBox.Checked)
            //            //{
            //            //    AddUserSurveys(userData.Users[0].UserId);
            //            //}
            //        }
            //    }
            //}

            MessageLabel.Visible = true;
            if (importCount > 0)
            {
                ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("UserImportedMessage"));
            }
            else
            {
                ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("NoUserImportedMessage"));
            }

            BindSurveyDropDownLists();
        }