public async Task WhenInvalidFormat_ReturnsInvalid()
        {
            var uniqueData = UNIQUE_PREFIX + nameof(WhenInvalidFormat_ReturnsInvalid);

            var userSettings = new UsersSettings();

            userSettings.Username.AllowAnyCharacter = false;
            userSettings.Username.AllowAnyLetter    = false;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateUsername(new ValidateUsernameQuery()
            {
                UserAreaCode = UserAreaWithoutEmailAsUsername.Code,
                Username     = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "invalid-characters", "* cannot contain 'V'.");
        }
Esempio n. 2
0
        public BsJsonResult Pager(UsersSettings settings)
        {
            var msg    = string.Empty;
            var status = BsResponseStatus.Success;
            var html   = string.Empty;
            var count  = 0;

            try
            {
                settings.UserData = Session["UserData"] as UserData;

                var pagerModel = _usersRepository.ToBsGridViewModel(settings, out count).Wrap <UsersPageModel>(x => x.Grid);

                html = this.BsRenderPartialView("Grid/_Grid", pagerModel);
            }
            catch (Exception ex)
            {
                msg    = ex.Message;
                status = BsResponseStatus.ServerError;
            }

            return(new BsJsonResult(new
            {
                Count = count,
                Html = html
            }, status, msg));
        }
Esempio n. 3
0
        public async Task WhenInvalidFormat_ReturnsInvalid()
        {
            var uniqueData = nameof(WhenInvalidFormat_ReturnsInvalid) + UNIQUE_DOMAIN;

            var userSettings = new UsersSettings();

            userSettings.EmailAddress.AllowAnyCharacter = false;
            userSettings.EmailAddress.AllowAnyLetter    = false;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateEmailAddress(new ValidateUserEmailAddressQuery()
            {
                UserAreaCode = CofoundryAdminUserArea.Code,
                Email        = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "invalid-characters", "* cannot contain 'W'.");
        }
 public UserAreaDefinitionRepository(
     IEnumerable <IUserAreaDefinition> userAreas,
     UsersSettings identitySettings
     )
 {
     DetectInvalidDefinitions(userAreas);
     _userAreas       = userAreas.ToDictionary(k => k.UserAreaCode);
     _options         = ConfigureOptions(userAreas, identitySettings);
     _defaultUserArea = userAreas
                        .OrderByDescending(u => u.IsDefaultAuthScheme)
                        .ThenByDescending(u => u is CofoundryAdminUserArea)
                        .ThenBy(u => u.Name)
                        .FirstOrDefault();
 }
        public async Task WhenEmailRequiredUnique_ValidatesEmailUnique()
        {
            var uniqueData = UNIQUE_PREFIX + "EmailReqUniq_ValEmailUnique";

            var userSettings = new UsersSettings();

            userSettings.EmailAddress.RequireUnique = true;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var dbContext         = app.Services.GetRequiredService <CofoundryDbContext>();
            var userAreaCode      = UserAreaWithoutEmailAsUsername.Code;
            var roleId            = await app.TestData.Roles().AddAsync(uniqueData, userAreaCode);

            var command = new AddUserCommand()
            {
                Email        = uniqueData + EMAIL_DOMAIN,
                Username     = uniqueData,
                Password     = PASSWORD,
                RoleId       = roleId,
                UserAreaCode = userAreaCode
            };

            await contentRepository
            .Users()
            .AddAsync(command);

            command.Username     = uniqueData + "2";
            command.OutputUserId = 0;

            await contentRepository
            .Awaiting(r => r.Users().AddAsync(command))
            .Should()
            .ThrowAsync <ValidationErrorException>()
            .WithMemberNames(nameof(command.Email))
            .WithMessage("*email*already*registered*");
        }
Esempio n. 6
0
        public ActionResult Index()
        {
            var userData = Session["UserData"] as UserData;

            var gridSettings = new UsersSettings
            {
                PageSize = 5,
                Page     = 1,
                UserData = userData
            };

            var gridModel = _usersRepository.ToBsGridViewModel(gridSettings);

            var model = new UsersPageModel
            {
                Grid    = gridModel,
                Toolbar = new BsToolbarModel <UserSearchModel, UserNewModel>
                {
                    Search = _usersRepository.GetSearchForm(gridSettings),
                    New    = _usersRepository.GetNewForm(gridSettings),
                }
            };

            var options = new Dictionary <string, object>
            {
                { "pagerUrl", Url.Action("Pager") },
                { "getRowsUrl", Url.Action("GetRows") },
                { "enableDisableUrl", Url.Action("EnableDisable") },
                { "deleteUrl", Url.Action("Delete") },
                { "updateComponentListUrl", Url.Action("UpdateComponentList") },
                { "currentCulture", Thread.CurrentThread.CurrentCulture.Name.Split('-')[0] },
                { "autocompleteComponents", RequireJsHtmlHelpers.ToJsonDictionary <UserAutocompleteComponents>() },
                { "userRoles", RequireJsHtmlHelpers.ToJsonDictionary <UserRoles>() }
            };

            RequireJsOptions.Add("Index", options);

            return(View(model));
        }
Esempio n. 7
0
        public virtual BsJsonResult UpdateComponentList(UserComponentListUpdateModel userComponentListUpdateModel)
        {
            var msg     = String.Empty;
            var status  = BsResponseStatus.Success;
            var results = new UserComponentListModel();

            #region Init Settings

            var currentUserData = Session["UserData"] as UserData;
            var settings        = new UsersSettings();

            settings.UserData = currentUserData;

            #endregion

            results = _usersRepository.UpdateUserComponentList(settings, userComponentListUpdateModel);

            return(new BsJsonResult(new
            {
                results = results.HtmlType == RegComponentHtmlType.Dropdown ? results.UserComponentDropdown.Items : results.UserComponentListBox.Items,
                total = results.Total
            }, status, msg));
        }
Esempio n. 8
0
        public async Task WhenNotRequiredUnique_DoesNotValidateUnique()
        {
            var uniqueData = "NotUniq_NValUnq" + UNIQUE_DOMAIN;

            var userSettings = new UsersSettings();

            userSettings.EmailAddress.RequireUnique = false;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var roleId            = await app.TestData.Roles().AddAsync(uniqueData, UserAreaWithoutEmailAsUsername.Code);

            await contentRepository
            .Users()
            .AddAsync(new AddUserCommand()
            {
                Email        = uniqueData,
                Username     = uniqueData,
                UserAreaCode = UserAreaWithoutEmailAsUsername.Code,
                RoleId       = roleId,
                Password     = nameof(ValidateUserEmailAddressQueryHandlerTests)
            });

            var result = await contentRepository
                         .Users()
                         .ValidateEmailAddress(new ValidateUserEmailAddressQuery()
            {
                UserAreaCode = UserAreaWithoutEmailAsUsername.Code,
                Email        = uniqueData
            })
                         .ExecuteAsync();

            result.IsSuccess.Should().BeTrue();
        }
        public async Task WhenTooShort_ReturnsInvalid()
        {
            var uniqueData = UNIQUE_PREFIX + "2S";

            var userSettings = new UsersSettings();

            userSettings.Username.MinLength = uniqueData.Length + 1;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateUsername(new ValidateUsernameQuery()
            {
                UserAreaCode = UserAreaWithoutEmailAsUsername.Code,
                Username     = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "min-length-not-met", $"* less than {userSettings.Username.MinLength} *");
        }
        public async Task WhenTooLong_ReturnsInvalid()
        {
            var uniqueData = UNIQUE_PREFIX + nameof(WhenTooLong_ReturnsInvalid);

            var userSettings = new UsersSettings();

            userSettings.Username.MaxLength = 15;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateUsername(new ValidateUsernameQuery()
            {
                UserAreaCode = UserAreaWithoutEmailAsUsername.Code,
                Username     = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "max-length-exceeded", "* more than 15 *");
        }
Esempio n. 11
0
        public async Task WhenTooShort_ReturnsInvalid()
        {
            var uniqueData = "2S" + UNIQUE_DOMAIN;

            var userSettings = new UsersSettings();

            userSettings.EmailAddress.MinLength = uniqueData.Length + 1;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateEmailAddress(new ValidateUserEmailAddressQuery()
            {
                UserAreaCode = CofoundryAdminUserArea.Code,
                Email        = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "min-length-not-met", $"* less than {userSettings.EmailAddress.MinLength} *");
        }
Esempio n. 12
0
        public async Task WhenTooLong_ReturnsInvalid()
        {
            var uniqueData = nameof(WhenTooLong_ReturnsInvalid) + UNIQUE_DOMAIN;

            var userSettings = new UsersSettings();

            userSettings.EmailAddress.MaxLength = 15;
            using var app = _appFactory.Create(s =>
            {
                s.AddSingleton(userSettings);
            });

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var result            = await contentRepository
                                    .Users()
                                    .ValidateEmailAddress(new ValidateUserEmailAddressQuery()
            {
                UserAreaCode = CofoundryAdminUserArea.Code,
                Email        = uniqueData
            })
                                    .ExecuteAsync();

            AssertErrorMessage(result, "max-length-exceeded", "* more than 15 *");
        }
        private static Dictionary <string, UserAreaOptions> ConfigureOptions(IEnumerable <IUserAreaDefinition> userAreas, UsersSettings identitySettings)
        {
            var result = new Dictionary <string, UserAreaOptions>();

            foreach (var userArea in userAreas)
            {
                var options = UserAreaOptions.CopyFrom(identitySettings);
                userArea.ConfigureOptions(options);
                result.Add(userArea.UserAreaCode, options);
            }

            return(result);
        }
Esempio n. 14
0
 public UsersBackgroundTaskRegistration(
     UsersSettings usersSettings
     )
 {
     _usersSettings = usersSettings;
 }