Example #1
0
        public async Task <IActionResult> UserAdmin(UserAdminSettingsModel model)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageSettings))
            {
                return(AccessDeniedView());
            }

            var tenantScope  = _tenantContext.ActiveTenantScopeConfiguration;
            var userSettings = _settingService.LoadSetting <UserSettings>(tenantScope);

            var lastUsernameValidationRule          = userSettings.UsernameValidationRule;
            var lastUsernameValidationEnabledValue  = userSettings.UsernameValidationEnabled;
            var lastUsernameValidationUseRegexValue = userSettings.UsernameValidationUseRegex;

            var dateTimeSettings = _settingService.LoadSetting <DateTimeSettings>(tenantScope);

            userSettings = model.UserSettings.ToSettings(userSettings);

            if (userSettings.UsernameValidationEnabled && userSettings.UsernameValidationUseRegex)
            {
                try
                {
                    //validate regex rule
                    var unused = Regex.IsMatch("test_user_name", userSettings.UsernameValidationRule);
                }
                catch (ArgumentException)
                {
                    //restoring previous settings
                    userSettings.UsernameValidationRule     = lastUsernameValidationRule;
                    userSettings.UsernameValidationEnabled  = lastUsernameValidationEnabledValue;
                    userSettings.UsernameValidationUseRegex = lastUsernameValidationUseRegexValue;

                    _notificationService.ErrorNotification("The regular expression for username validation is incorrect");
                }
            }

            _settingService.SaveSetting(userSettings);

            dateTimeSettings.DefaultTimeZoneId       = model.DateTimeSettings.DefaultTimeZoneId;
            dateTimeSettings.AllowUsersToSetTimeZone = model.DateTimeSettings.AllowUsersToSetTimeZone;
            _settingService.SaveSetting(dateTimeSettings);

            await _userActivityService.InsertActivityAsync("EditSettings", "Edited settings");

            _notificationService.SuccessNotification("The settings have been updated successfully.");

            SaveSelectedTabName();

            return(RedirectToAction("UserAdmin"));
        }
Example #2
0
        public async Task <UserAdminSettingsModel> PrepareUserAdminSettingsModel()
        {
            var model = new UserAdminSettingsModel
            {
                ActiveTenantScopeConfiguration = _tenantContext.ActiveTenantScopeConfiguration,

                //prepare user settings model
                UserSettings = await PrepareUserSettingsModel(),

                //prepare date time settings model
                DateTimeSettings = await PrepareDateTimeSettingsModel(),
            };

            return(model);
        }