public async Task <User> RegisterUser(RegisterUserModel model)
        {
            if (!await registerUserPolicy.IsValid(model))
            {
                throw new PolicyViolationException(registerUserPolicy.PolicyViolations);
            }

            model.Password = "******";
            var salt           = encrypter.GenerateSalt();
            var hashedPassword = encrypter.GenerateHash(model.Password, salt);

            var user = dbContext.Users.Add(new User(userInfoProvider.Username)
            {
                CreatedBy                = userInfoProvider.Username,
                LastModifiedBy           = userInfoProvider.Username,
                Firstname                = model.Firstname,
                Lastname                 = model.Lastname,
                Username                 = model.Username,
                ResetPasswordOnNextLogin = true,
                PasswordHash             = model.IsAdUser ? null : hashedPassword,
                Salt = salt,
                IsActiveDirectoryUser = model.IsAdUser,
                Email = model.Email
            });

            CreateRoles(model.Roles, user.Entity);

            await dbContext.SaveChangesAsync();

            return(user.Entity);
        }