示例#1
0
        public async Task <IActionResult> Registration(
            CancellationToken cancellationToken,
            [FromBody] RegistrationBinding binding,
            [FromServices] IUserRepository userRepository,
            [FromServices] UserRegistrationService registrationService)
        {
            var user = await userRepository.FindByLogin(binding.Login, cancellationToken);

            if (user != null)
            {
                return(Conflict());
            }
            user = await registrationService.CreateUser(binding.Email,
                                                        binding.Login, binding.Password, 1, binding.NumberPhone,
                                                        DateTime.Now, DateTime.Now, binding.FirstName, binding.LastName,
                                                        binding.MiddleName, binding.Hobby, binding.DateOfBirth, (AuthType)binding.AuthTypeBinding, cancellationToken);

            try
            {
                await userRepository.Save(user);

                return(NoContent());
            }
            catch (DbUpdateException exception)
                when(((Npgsql.PostgresException)exception.InnerException)?.SqlState == "23505")
                {
                    return(Conflict());
                }
        }
示例#2
0
 public AuthController(AuthService authService, UserRegistrationService userRegistrationService,
                       IUnitOfWork unitOfWork)
 {
     _authService             = authService;
     _userRegistrationService = userRegistrationService;
     _unitOfWork = unitOfWork;
 }
        public async Task <IActionResult> Registration(
            CancellationToken cancellationToken,
            [FromForm] RegistrationBinding binding,
            [FromServices] IUserRepository userRepository,
            [FromServices] UserRegistrationService registrationService)
        {
            var user = await userRepository.FindByEmail(binding.Email, cancellationToken);

            if (user != null)
            {
                if (user.EmailState == EmailState.Unconfirmed)
                {
                    return(NoContent());
                }
                return(Conflict());
            }

            user = await registrationService.CreateUser(binding.Email, binding.Password, cancellationToken);

            try
            {
                await userRepository.Save(user);

                return(NoContent());
            }
            catch (DbUpdateException exception)
                when(((Npgsql.PostgresException)exception.InnerException)?.SqlState == "23505")  // 23505 unique_violation
                {
                    return(Conflict());
                }
        }
示例#4
0
        public static UserRegistrationService GetRegistrationService(
            AbstractValidator <UserRegistrationRequest> validator = null,
            IUserAuthRepository authRepo = null,
            string contentType           = null)
        {
            var requestContext = new BasicRequest();

            if (contentType != null)
            {
                requestContext.ResponseContentType = contentType;
            }
            var userAuthRepository = authRepo ?? GetStubRepo();
            var service            = new UserRegistrationService
            {
                UserRegistrationRequestValidator = validator ?? new UserRegistrationRequestValidator {
                    UserAuthRepo = userAuthRepository
                },
                AuthRepo = userAuthRepository,
                Request  = requestContext,
            };

            HostContext.Container.Register(userAuthRepository);

            return(service);
        }
示例#5
0
        public AppReturnObject Register(UserAccount userRegistration)
        {
            var _user = new AppUser()
            {
                UserName  = userRegistration.UserName,
                Email     = userRegistration.Email,
                FirstName = userRegistration.FirstName,
                LastName  = userRegistration.LastName,
                Country   = userRegistration.Country,
                Address   = userRegistration.Address,
                Password  = userRegistration.Password
            };

            var             _serviceResult = new UserRegistrationService().Register(_user);
            AppReturnObject _retval        = new AppReturnObject()
            {
                Succeeded = _serviceResult.Succeeded, Errors = _serviceResult.Errors.ToList()
            };

            if (_serviceResult.Succeeded)
            {
                userRegistration.Id             = _user.Id;
                userRegistration.CurrentBalance = _user.CurrentBalance;
                _retval.UserAccount             = userRegistration;
            }

            return(_retval);
        }
        public void Login_fails_with_empty_inputs()
        {
            var store = new Mock<IUserRegistrationStore>();
            var svc = new UserRegistrationService(store.Object);

            Assert.Throws<ArgumentNullException>(() => svc.Login("*****@*****.**", null));
            Assert.Throws<ArgumentNullException>(() => svc.Login(null, "password"));
        }
示例#7
0
        public RegisterUser()
        {
            registerService = new UserRegistrationService();
            registerService.EnableDecompression = true;
            string soapServer = CurrentValues.Instance.YodleeSoapServer;

            registerService.Url = soapServer + "/" + registerService.GetType().FullName;
        }
        public void Fails_with_empty_inputs()
        {
            var store = new Mock<IUserRegistrationStore>();
            var svc = new UserRegistrationService(store.Object);

            Assert.Throws<ArgumentNullException>(() => svc.Register(null, "password"));
            Assert.Throws<ArgumentNullException>(() => svc.Register("email", null));
        }
        public void Registration_fails_with_duplicate_emails()
        {
            var store = new UserRegistrationStore();
            var svc = new UserRegistrationService(store);

            svc.Register("*****@*****.**", "password");

            Assert.Throws<DbUpdateException>(() => svc.Register("*****@*****.**", "other"));
        }
        public void Setup()
        {
            _mockRepository = new Mock <IUserRepository>();

            _service = new UserRegistrationService
                       (
                _mockRepository.Object
                       );
        }
        public void End_to_end_failed_login()
        {
            var store = new UserRegistrationStore();
            var svc = new UserRegistrationService(store);

            svc.Register("*****@*****.**", "password");

            Assert.Equal(Guid.Empty, svc.Login("*****@*****.**", "wrong"));
            Assert.Equal(Guid.Empty, svc.Login("*****@*****.**", "password"));
        }
示例#12
0
 public MongoRepositoryFactoryTests()
 {
     _connectionString     = new ConnectionStringFactory();
     _mongoRepository      = new MongoRepositoryFactory(_connectionString);
     _logRepository        = new LogsRepository(_mongoRepository);
     _playerRepository     = new PlayerRepository(_mongoRepository);
     _baseRepository       = new BaseRepository(_mongoRepository);
     _usefulLinkRepository = new UsefulLinkRepository(_mongoRepository);
     _userRepository       = new UserRepository(_mongoRepository);
     _registrationService  = new UserRegistrationService(_userRepository);
 }
        public void Service_can_verify_credentials()
        {
            var reg = new UserRegistration("*****@*****.**", "password");
            var store = new Mock<IUserRegistrationStore>();
            store.Setup(x => x.Load("*****@*****.**")).Returns(reg);
            var svc = new UserRegistrationService(store.Object);

            var result = svc.Login("*****@*****.**", "password");

            store.VerifyAll();
            Assert.Equal(reg.Id, result);
        }
        public void End_to_end_success()
        {
            var store = new UserRegistrationStore();
            var svc = new UserRegistrationService(store);

            svc.Register("*****@*****.**", "password");

            var id = svc.Login("*****@*****.**", "password");
            Assert.NotEqual(Guid.Empty, id);

            var user = store.Users.FirstOrDefault(x => x.Id == id);
            Assert.Equal("*****@*****.**", user.Email);
        }
        public void Login_fails_with_wrong_password()
        {
            var reg = new UserRegistration("*****@*****.**", "password");
            var store = new Mock<IUserRegistrationStore>();
            store.Setup(x => x.Load("*****@*****.**")).Returns(reg);
            var svc = new UserRegistrationService(store.Object);

            var result = svc.Login("*****@*****.**", "wrong");

            store.VerifyAll();
            Assert.NotEqual(reg.Id, result);
            Assert.Equal(new Guid(), result);
        }
示例#16
0
        /// controls END
        #endregion
        #region BASE_METHODS
        protected override async Task OnInitializedAsync()
        {
            NewCompany          = new CompanyRegistrationDTO();
            AddLemlistStatistic = new AddLemlistStatistic();
            checkedContacts     = new List <int>();
            await TempService.UpdateCompanies();

            await RenderUpdate();

            authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();

            user = authState.User;
            if (user.Identity.IsAuthenticated)
            {
                TempService.CurrentUser = await UserRegistrationService.GetCurrent(user.Identity.Name);
            }
            await StartCountdown();
        }
        public CreateUserStatus CreateUser(RegistrationData user,
                                           [Required(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(ValidationErrorResources))]
                                           [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "ValidationErrorBadPasswordStrength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
                                           [StringLength(50, MinimumLength = 7, ErrorMessageResourceName = "ValidationErrorBadPasswordLength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
                                           string password)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            // Run this BEFORE creating the user to make sure roles are enabled and the default role is available.
            //
            // If there is a problem with the role manager, it is better to fail now than to fail after the user is created.
            if (!Roles.RoleExists(UserRegistrationService.DefaultRole))
            {
                Roles.CreateRole(UserRegistrationService.DefaultRole);
            }

            // NOTE: ASP.NET by default uses SQL Server Express to create the user database.
            // CreateUser will fail if you do not have SQL Server Express installed.
            MembershipCreateStatus createStatus;

            Membership.CreateUser(user.UserName, password, user.Email, user.Question, user.Answer, true, null, out createStatus);

            if (createStatus != MembershipCreateStatus.Success)
            {
                return(UserRegistrationService.ConvertStatus(createStatus));
            }

            // Assign the user to the default role.
            // This will fail if role management is disabled.
            Roles.AddUserToRole(user.UserName, UserRegistrationService.DefaultRole);

            // Set the friendly name (profile setting).
            // This will fail if the web.config is configured incorrectly.
            ProfileBase profile = ProfileBase.Create(user.UserName, true);

            profile.SetPropertyValue("FriendlyName", user.FriendlyName);
            profile.Save();

            return(CreateUserStatus.Success);
        }
        public async Task <IActionResult> ResendConfirmationCode(
            CancellationToken cancellationToken,
            [FromRoute] string email,
            [FromServices] IUserRepository userRepository,
            [FromServices] UserRegistrationService userRegistrationService)
        {
            var user = await userRepository.FindByEmail(email, cancellationToken);

            if (user == null)
            {
                return(NotFound());
            }

            if (user.EmailState != EmailState.Unconfirmed)
            {
                return(UnprocessableEntity());
            }

            await userRegistrationService.ResendConfirmationCode(user, cancellationToken);

            return(NoContent());
        }
示例#19
0
        public void Requires_unique_UserName_and_Email()
        {
            var mockExistingUser = new UserAuth();

            var mock = new Mock <IUserAuthRepository>();

            mock.Setup(x => x.GetUserAuthByUserName(It.IsAny <string>()))
            .Returns(() => mockExistingUser).Verifiable();
            var mockUserAuth = mock.Object;

            var service = new UserRegistrationService
            {
                UserRegistrationRequestValidator = new UserRegistrationRequestValidator {
                    UserAuthRepo = mockUserAuth
                },
                AuthRepo = mockUserAuth,
            };

            var request = new UserRegistrationRequest
            {
                DisplayName = "DisplayName",
                Email       = "*****@*****.**",
                FirstName   = "FirstName",
                LastName    = "LastName",
                Password    = "******",
                UserName    = "******",
            };

            var response = PostRegistrationError(service, request);
            var errors   = response.GetFieldErrors();

            Assert.That(errors.Count, Is.EqualTo(2));
            Assert.That(errors[0].ErrorCode, Is.EqualTo("AlreadyExists"));
            Assert.That(errors[0].FieldName, Is.EqualTo("UserName"));
            Assert.That(errors[1].ErrorCode, Is.EqualTo("AlreadyExists"));
            Assert.That(errors[1].FieldName, Is.EqualTo("Email"));

            mock.Verify();
        }
        public static UserRegistrationService GetRegistrationService(
            AbstractValidator<UserRegistrationRequest> validator = null,
            IUserAuthRepository authRepo = null,
            string contentType = null)
        {
            var requestContext = new BasicRequest();
            if (contentType != null)
            {
                requestContext.ResponseContentType = contentType;
            }
            var userAuthRepository = authRepo ?? GetStubRepo();
            var service = new UserRegistrationService
            {
                UserRegistrationRequestValidator = validator ?? new UserRegistrationRequestValidator { UserAuthRepo = userAuthRepository },
                AuthRepo = userAuthRepository,
                Request = requestContext,
            };

            HostContext.Container.Register(userAuthRepository);

            return service;
        }
 public FinishUserRegistrationEventHandler(UserRegistrationService userRegistrationService)
 {
     _userRegistrationService = userRegistrationService;
 }
        public void Stores_registration_with_email(string email, string password)
        {
            var store = new Mock<IUserRegistrationStore>();
            store.Setup(x => x.Save(It.Is<UserRegistration>(r => r.Email == email)));
            var svc = new UserRegistrationService(store.Object);

            svc.Register(email, password);

            store.VerifyAll();
        }
示例#23
0
 public RegisterUser()
 {
     registerService = new UserRegistrationService();
     registerService.EnableDecompression = true;
     registerService.Url = System.Configuration.ConfigurationManager.AppSettings.Get("soapServer") + "/" + registerService.GetType().FullName;
 }
 public SignInController()
 {
     UserManager             = new UserService();
     UserRegistrationService = new UserRegistrationService();
 }
示例#25
0
        private void ConfigureValidationRules()
        {
            Validator.AddRequiredRule(() => UserName, "User Name is required");

            Validator.AddAsyncRule(nameof(UserName),
                                   async() =>
            {
                var isAvailable = await UserRegistrationService.IsUserNameAvailable(UserName).ToTask();

                return(RuleResult.Assert(isAvailable,
                                         string.Format("User Name {0} is taken. Please choose a different one.", UserName)));
            });

            Validator.AddRequiredRule(() => FirstName, "First Name is required");

            Validator.AddRequiredRule(() => LastName, "Last Name is required");

            Validator.AddRequiredRule(() => Email, "Email is required");

            Validator.AddRule(nameof(Email),
                              () =>
            {
                const string regexPattern =
                    @"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
                return(RuleResult.Assert(Regex.IsMatch(Email, regexPattern),
                                         "Email must by a valid email address"));
            });

            Validator.AddRequiredRule(() => Password, "Password is required");

            Validator.AddRule(nameof(Password),
                              () => RuleResult.Assert(Password.Length >= 6,
                                                      "Password must contain at least 6 characters"));

            Validator.AddRule(nameof(Password),
                              () => RuleResult.Assert((!Password.All(char.IsLower) &&
                                                       !Password.All(char.IsUpper) &&
                                                       !Password.All(char.IsDigit)),
                                                      "Password must contain both lower case and upper case letters"));

            Validator.AddRule(nameof(Password),
                              () => RuleResult.Assert(Password.Any(char.IsDigit),
                                                      "Password must contain at least one digit"));

            Validator.AddRule(nameof(PasswordConfirmation),
                              () =>
            {
                if (!string.IsNullOrEmpty(Password) && string.IsNullOrEmpty(PasswordConfirmation))
                {
                    return(RuleResult.Invalid("Please confirm password"));
                }

                return(RuleResult.Valid());
            });

            Validator.AddRule(nameof(Password),
                              nameof(PasswordConfirmation),
                              () =>
            {
                if (!string.IsNullOrEmpty(Password) && !string.IsNullOrEmpty(PasswordConfirmation))
                {
                    return(RuleResult.Assert(Password == PasswordConfirmation, "Passwords do not match"));
                }

                return(RuleResult.Valid());
            });

            Validator.AddChildValidatable(() => InterestSelectorViewModel);
        }
 public SignUpController()
 {
     UserRegistrationService = new UserRegistrationService();
 }
示例#27
0
        private static HttpError PostRegistrationError(UserRegistrationService service, UserRegistrationRequest register)
        {
            var response = (HttpError)service.RunAction(register, (svc, req) => svc.Post(req));

            return(response);
        }
示例#28
0
 public ServiceController()
 {
     UserProfileService      = new UserProfileService();
     NotificationService     = new NotificationService();
     UserRegistrationService = new UserRegistrationService();
 }
 public PasswordResetController()
 {
     UserRegistrationService = new UserRegistrationService();
 }
 public SynchronizePendingUserEventHandler(UserRegistrationService userRegistrationService)
 {
     _userRegistrationService = userRegistrationService;
 }
 private void CreateUserRegistrationService()
 {
     PasswordHashService = MockRepository.GenerateStub <IPasswordHashService>();
     UserRepository      = new InMemoryUserRepository();
     Service             = new UserRegistrationService(UserRepository, PasswordHashService);
 }
        public void Requires_unique_UserName_and_Email()
        {
            var mockExistingUser = new UserAuth();

            var mock = new Mock<IUserAuthRepository>();
            mock.Setup(x => x.GetUserAuthByUserName(It.IsAny<string>()))
                .Returns(() => mockExistingUser).Verifiable();
            var mockUserAuth = mock.Object;

            var service = new UserRegistrationService
            {
                UserRegistrationRequestValidator = new UserRegistrationRequestValidator { UserAuthRepo = mockUserAuth },
                AuthRepo = mockUserAuth,
            };

            var request = new UserRegistrationRequest
            {
                DisplayName = "DisplayName",
                Email = "*****@*****.**",
                FirstName = "FirstName",
                LastName = "LastName",
                Password = "******",
                UserName = "******",
            };

            var response = PostRegistrationError(service, request);
            var errors = response.GetFieldErrors();

            Assert.That(errors.Count, Is.EqualTo(2));
            Assert.That(errors[0].ErrorCode, Is.EqualTo("AlreadyExists"));
            Assert.That(errors[0].FieldName, Is.EqualTo("UserName"));
            Assert.That(errors[1].ErrorCode, Is.EqualTo("AlreadyExists"));
            Assert.That(errors[1].FieldName, Is.EqualTo("Email"));

            mock.Verify();
        }
        public new void SetUp()
        {
            _userSettings = new UserSettings
            {
                UnduplicatedPasswordsNumber = 1,
                HashedPasswordFormat        = "SHA512",
            };

            _securitySettings = new SecuritySettings
            {
                EncryptionKey = "273ece6f97dd844d"
            };

            _encryptionService = new EncryptionService(_securitySettings);

            #region User Setup

            _userRepository = new Mock <IRepository <User> >();

            var user1 = new User
            {
                Id       = 1,
                Username = "******",
                Email    = "*****@*****.**",
                Active   = true
            };
            AddUserToRegisteredRole(user1);

            var user2 = new User
            {
                Id       = 2,
                Username = "******",
                Email    = "*****@*****.**",
                Active   = true
            };
            AddUserToRegisteredRole(user2);

            var user3 = new User
            {
                Id       = 3,
                Username = "******",
                Email    = "*****@*****.**",
                Active   = true
            };
            AddUserToRegisteredRole(user3);

            var user4 = new User
            {
                Id       = 4,
                Username = "******",
                Email    = "*****@*****.**",
                Active   = true
            };
            AddUserToRegisteredRole(user4);

            var user5 = new User
            {
                Id       = 5,
                Username = "******",
                Email    = "*****@*****.**",
                Active   = true
            };

            var mockUsers = new List <User> {
                user1, user2, user3, user4, user5
            }.AsQueryable().BuildMockDbSet();
            _userRepository.Setup(x => x.Table).Returns(mockUsers.Object);

            #endregion

            #region UserPassword Setup

            _userPasswordRepository = new Mock <IRepository <UserPassword> >();

            var saltKey = _encryptionService.CreateSaltKey(5);

            var password = _encryptionService.CreatePasswordHash("password", saltKey, "SHA512");

            var password1 = new UserPassword
            {
                UserId         = user1.Id,
                PasswordFormat = PasswordFormat.Hashed,
                PasswordSalt   = saltKey,
                Password       = password,
                CreatedOnUtc   = DateTime.UtcNow
            };

            var password2 = new UserPassword
            {
                UserId         = user2.Id,
                PasswordFormat = PasswordFormat.Clear,
                Password       = "******",
                CreatedOnUtc   = DateTime.UtcNow
            };

            var password3 = new UserPassword
            {
                UserId         = user3.Id,
                PasswordFormat = PasswordFormat.Encrypted,
                Password       = _encryptionService.EncryptText("password"),
                CreatedOnUtc   = DateTime.UtcNow
            };

            var password4 = new UserPassword
            {
                UserId         = user4.Id,
                PasswordFormat = PasswordFormat.Clear,
                Password       = "******",
                CreatedOnUtc   = DateTime.UtcNow
            };

            var password5 = new UserPassword
            {
                UserId         = user5.Id,
                PasswordFormat = PasswordFormat.Clear,
                Password       = "******",
                CreatedOnUtc   = DateTime.UtcNow
            };

            var mockUserPasswords = new[] { password1, password2, password3, password4, password5 }
            .AsQueryable().BuildMockDbSet();
            _userPasswordRepository.Setup(x => x.Table).Returns(mockUserPasswords.Object);

            #endregion

            _roleRepository             = new Mock <IRepository <Role> >();
            _userRoleRepository         = new Mock <IRepository <UserRole> >();
            _genericAttributeRepository = new Mock <IRepository <GenericAttribute> >();
            _genericAttributeService    = new Mock <IGenericAttributeService>();
            _workContext           = new Mock <IWorkContext>();
            _eventPublisherService = new Mock <IEventPublisher>();

            _userService = new UserService(
                new UserSettings(),
                new NullCache(),
                null,
                null,
                _eventPublisherService.Object,
                _genericAttributeService.Object,
                _userRepository.Object,
                _roleRepository.Object,
                _userRoleRepository.Object,
                _userPasswordRepository.Object,
                _genericAttributeRepository.Object,
                null);

            _userRegistrationService = new UserRegistrationService(_userSettings, _userService, _encryptionService);
        }
        public void Stores_new_UserRegistration()
        {
            var store = new Mock<IUserRegistrationStore>();
            store.Setup(x => x.Save(It.IsAny<UserRegistration>()));
            var svc = new UserRegistrationService(store.Object);

            svc.Register("*****@*****.**", "password");

            store.VerifyAll();
        }
 private static HttpError PostRegistrationError(UserRegistrationService service, UserRegistrationRequest register)
 {
     var response = (HttpError)service.RunAction(register, (svc, req) => svc.Post(req));
     return response;
 }