示例#1
0
        public async Task <IActionResult> Register([FromBody] RegisterAccountRequest model)
        {
            var appUser = new ApplicationUser()
            {
                Email         = model.Login,
                UserName      = model.Login,
                SecurityStamp = Guid.NewGuid().ToString()
            };
            var result = await userManager.CreateAsync(appUser, model.Password);

            if (result.Succeeded)
            {
                var user = new User
                {
                    Login    = model.Login,
                    Password = model.Password
                };
                forumContext.Add(user);
                forumContext.SaveChanges();
                return(Ok());
            }
            else
            {
                return(BadRequest());
            }
        }
        public async Task ShouldBeHttpStatusCodeBadRequest()
        {
            const string email   = "*****@*****.**";
            var          user    = TestData.FileStorage.GetUsers().First();
            var          factory = TestHost;

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                await service.CreateAsync(user);
            });

            var request = new RegisterAccountRequest
            {
                Country  = EnumCountryIsoCode.CA,
                Dob      = "1990/01/01",
                Email    = email,
                Ip       = "127.0.0.1",
                Password = "******",
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
        public ActionResult <AuthenticateAccountResponse> Register([FromBody] RegisterAccountRequest request)
        {
            // Register the account
            try
            {
                var response = _accountService.Register(request);
                _logger.LogInformation("(AccountId: {accountId}, EmailAddress: {emailAddress}) registered successfully", response.AccountId, response.EmailAddress);
                return(Ok(response));
            }
            catch (Exception e)
            {
                _logger.LogWarning(e, "Email address {emailAddress} registration failed!", request.EmailAddress);

                // Default status code
                int httpStatusCode = (int)HttpStatusCode.InternalServerError;

                if (e is AccountAlreadyExistsException)
                {
                    // Status code if account already exists
                    httpStatusCode = (int)HttpStatusCode.Conflict;
                }

                return(StatusCode(httpStatusCode, e.GetType().Name));
            }
        }
        public async Task CreateAccount(RegisterAccountRequest registerAccountRequest)
        {
            var resource = "/v1/account";
            var request  = new HttpRequestMessage(HttpMethod.Post, resource);

            await Execute(request, registerAccountRequest);
        }
示例#5
0
        public async Task <IActionResult> RegisterAccountAsync([FromBody] RegisterAccountRequest request)
        {
            var result = await _userService.CreateAsync(
                new User
            {
                Id      = new UserId(),
                Email   = request.Email,
                Country = request.Country.ToEnumeration <Country>(),
                Dob     = new UserDob(DateTime.Parse(request.Dob))
            },
                request.Password);

            if (result.Succeeded)
            {
                var user = await _userService.FindByEmailAsync(request.Email);

                await _serviceBusPublisher.PublishUserCreatedIntegrationEventAsync(user, request.Ip);

                var code = await _userService.GenerateEmailConfirmationTokenAsync(user);

                await _serviceBusPublisher.PublishUserEmailConfirmationTokenGeneratedIntegrationEventAsync(user.Id.ConvertTo <UserId>(), code);

                return(this.Ok());
            }

            ModelState.Bind(result); // FRANCIS: VALIDATION SHOULD BE MORE GENERAL FOR REGISTRATION

            return(this.BadRequest(new ValidationProblemDetails(ModelState)));
        }
        public async Task <IHttpActionResult> Register([FromBody] RegisterAccountRequest model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (await _userManager.FindByNameAsync(model.Email) != null)
            {
                return(BadRequest("User with such email already exists"));
            }

            var createResult = await CreateUser(model);

            IdentityResult result       = createResult.Item1;
            Guid           userDomainId = createResult.Item2;

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            var actionLink = Url.Link("GetUserAccountById", new { id = userDomainId });

            return(Created(actionLink, new { Id = userDomainId }));
        }
        private async Task <Tuple <IdentityResult, Guid> > CreateUser(RegisterAccountRequest model)
        {
            var user = new ApplicationUser
            {
                DomainId = Guid.NewGuid(),
                UserName = model.Email,
                Email    = model.Email,
                IsActive = true,
                Profile  = new ApplicationUserProfile {
                    FirstName = model.FirstName, LastName = model.LastName
                }
            };

            IdentityResult result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(new Tuple <IdentityResult, Guid>(result, Guid.Empty));
            }

            string role = GlobalInfo.Client;

            await SendConfirmEmail(user);

            await _userManager.AddToRoleAsync(user.Id, role);

            return(new Tuple <IdentityResult, Guid>(IdentityResult.Success, user.DomainId));
        }
示例#8
0
        private void Register(object sender, RoutedEventArgs e)
        {
            SaveLoginSettings();
            LoginMessageText      = string.Empty;
            AwaitingLoginResponse = true;
            Cursor = Cursors.Wait;

            MainWindow main = App.Current.MainWindow as MainWindow;

            Task.Run(() =>
            {
                main.Client.Connect(address, port, CONNECT_TIMEOUT);
                if (!main.Client.IsConnected)
                {
                    App.Current.Dispatcher.Invoke(() =>
                    {
                        main.Client.Dispose();
                        loginMessageText      = SERVER_UNREACHABLE;
                        AwaitingLoginResponse = false;
                        if (!WorkInProgress)
                        {
                            Cursor = Cursors.Arrow;
                        }
                    });
                    return;
                }

                RegisterAccountRequest request = new RegisterAccountRequest(username, PasswordBox.Password, main.Client.Serializer);
                JamPacket requestPacket        = new JamPacket(Guid.Empty, Guid.Empty, RegisterAccountRequest.DATA_TYPE, request.GetBytes());
                main.Client.Send(requestPacket);
            });
        }
        public async Task <IActionResult> Register([FromBody] RegisterAccountRequest request)
        {
            if (request == null)
            {
                return(BadRequest());
            }

            var user = new ApplicationUser
            {
                UserName = request.EMail,
                Email    = request.EMail
            };

            var result = await userManager.CreateAsync(user, request.Password);

            if (result.Succeeded)
            {
                // Generate Confirmation Token for the User:
                var confirmationCode = await userManager.GenerateEmailConfirmationTokenAsync(user);

                // Generate the Callback URL for the Confirmation:
                var confirmationUrl = Url.EmailConfirmationLink(user.Id, confirmationCode, Request.Scheme);
                // Send the Mail:
                await emailConfirmationService.SendEmailConfirmationAsync(user, confirmationUrl);

                return(Ok());
            }

            return(BadRequest());
        }
示例#10
0
        private static void RegisterAccount(JamServerConnection serverConnection, JamPacket packet)
        {
            RegisterAccountRequest register = new RegisterAccountRequest(packet.Data, serverConnection.Serializer);

            RegisterAccountResponse response;

            try
            {
                Account createdAccount = AccountFactory.Generate(register.Username, register.Password, Program.Server.HashFactory, true);
                response = new RegisterAccountResponse(RegisterAccountResponse.AccountRegistrationResult.Good, createdAccount, serverConnection.Serializer);

                Console.WriteLine("Registered new Account: {0} - {1}", createdAccount.AccountID, createdAccount.Username);
            }
            catch (DbUpdateException)
            {
                response = new RegisterAccountResponse(RegisterAccountResponse.AccountRegistrationResult.Bad, null, serverConnection.Serializer);
            }
            catch (EntityException)
            {
                serverConnection.Server.Dispose();
                return;
            }

            JamPacket responsePacket = new JamPacket(Guid.Empty, Guid.Empty, RegisterAccountResponse.DATA_TYPE, response.GetBytes());

            serverConnection.Send(responsePacket);
        }
        private void RegisterDialogOnResponse(object?sender, DialogResponseEventArgs e)
        {
            var registerAccountRequest = new RegisterAccountRequest();

            registerAccountRequest.Email    = "*****@*****.**";
            registerAccountRequest.Login    = _player.Name;
            registerAccountRequest.Password = e.InputText;

            try
            {
                var response = MruV.Accounts.RegisterAccount(registerAccountRequest);
                if (response.Success)
                {
                    new LoginFlow(_player).Show();
                    Tutorial tutorial = new Tutorial(_player);
                    tutorial.RegisterMessage();
                }
                else
                {
                    _player.SendClientMessage("Nie udało się zarejestrować konta.");
                    _registerDialog.Show(_player);
                }
            }
            catch (RpcException err)
            {
                _player.SendClientMessage($"Nie udało się zarejestrować, błąd: {err.Status.Detail}");
            }
        }
示例#12
0
        public async Task <IActionResult> Register([FromBody] RegisterAccountRequest registerAccount)
        {
            var user = new Employee
            {
                UserName  = registerAccount.Email,
                Email     = registerAccount.Email,
                FirstName = registerAccount.FirstName,
                LastName  = registerAccount.LastName,
            };

            if (registerAccount.ProfilePhoto != null)
            {
                user.ProfilePhoto = registerAccount.ProfilePhoto;
            }
            if (registerAccount.RegisteredOfficeId != 0)
            {
                user.RegisteredOffice = await _officeRepository.FindById(registerAccount.RegisteredOfficeId);
            }



            var result = await _userManager.CreateAsync(user, registerAccount.Password);

            if (!result.Succeeded)
            {
                return(Conflict());
            }

            return(Ok(DateTime.Now));
        }
示例#13
0
        /// <summary>
        /// sends a registration request to the server
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="newPassword"></param>
        /// <param name="newPasswordRe"></param>
        /// <returns></returns>
        public async Task <bool> RegisterUser(string userName, string newPassword, string newPasswordRe)
        {
            try
            {
                IsLoading = true;
                if (newPassword != newPasswordRe)
                {
                    throw new Exception("A két jelszó értéke nem egyezik meg!");
                }

                var registerAccountRequest = new RegisterAccountRequest
                {
                    EmployeeId = Parameter,
                    Password   = newPassword,
                    Username   = userName
                };

                await _accountApiService.RegisterAccount(registerAccountRequest);

                return(true);
            }
            catch (Exception e)
            {
                _dialogService.ShowWarning(e.Message);
                return(false);
            }
            finally
            {
                IsLoading = false;
            }
        }
示例#14
0
        public AuthenticateAccountResponse Register(RegisterAccountRequest request)
        {
            if (_context.Accounts.Any(x => x.EmailAddress == request.EmailAddress))
            {
                // There is already an account with given email address
                throw new AccountAlreadyExistsException();
            }

            // Create new account object from the request model
            var account = new Account()
            {
                UserFullName = request.UserFullName,
                EmailAddress = request.EmailAddress,
                PasswordHash = BC.HashPassword(request.Password)
            };

            // Save account
            _context.Accounts.Add(account);
            _context.SaveChanges();

            // Create a response that includes the access token
            var response = new AuthenticateAccountResponse
            {
                AccountId    = account.AccountId,
                UserFullName = account.UserFullName,
                EmailAddress = account.EmailAddress,
                AccessToken  = GenerateJsonWebToken(account)
            };

            return(response);
        }
示例#15
0
        /// <summary>
        /// registers a new account
        /// </summary>
        /// <param name="registerAccountRequest"></param>
        /// <returns></returns>
        public async Task RegisterAccount(RegisterAccountRequest registerAccountRequest)
        {
            _loggingService.LogDebug(new
            {
                action = nameof(registerAccountRequest)
            });

            await _apiService.PostAsync("Account/RegisterAccount", registerAccountRequest);
        }
        public async Task <IdentityResult> RegisterUser(RegisterAccountRequest registerAccountRequest)
        {
            IdentityUser account = new IdentityUser
            {
                UserName = registerAccountRequest.UserName,
                Email    = registerAccountRequest.UserName
            };

            return(await _userManager.CreateAsync(account, registerAccountRequest.Password));
        }
示例#17
0
        public async Task <IActionResult> Post([FromBody] RegisterAccountRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.SelectMany(m => m.Errors)));
            }

            var user = mapper.Map <AppUser>(request);
            var createActionResult = await userManager.CreateAsync(user, request.Password);

            return(createActionResult.Succeeded ? Ok("User created") : Ok(createActionResult.Errors.ToList()));
        }
示例#18
0
        public Task <AlpApiResponse> RegisterAccount([FromBody] RegisterAccountRequest registerAccountRequest)
        {
            var sessionToken = HttpContext.Request.Headers["sessiontoken"];

            if (!_accountService.Authorize(sessionToken, new List <RoleType> {
                RoleType.Admin
            }))
            {
                return(Task.FromResult(new AlpApiResponse {
                    Success = false, Message = "Nincs jogosultsága ehhez a művelethez!"
                }));
            }
            return(_accountService.RegisterAccount(registerAccountRequest));
        }
        private async Task <Tuple <IdentityResult, Guid> > CreateUser(RegisterAccountRequest model)
        {
            InviteInfo invite = null;

            if (model.InviteCode != null)
            {
                invite = _invitesService.FindInviteByToken(model.InviteCode.Value);
                if (invite == null || !invite.Email.Equals(model.Email, StringComparison.OrdinalIgnoreCase))
                {
                    return(new Tuple <IdentityResult, Guid>(IdentityResult.Failed("Bad invite"), Guid.Empty));
                }
            }

            var user = new ApplicationUser
            {
                DomainId = Guid.NewGuid(),
                UserName = model.Email,
                Email    = model.Email,
                IsActive = true,
                Profile  = new ApplicationUserProfile {
                    FirstName = model.FirstName, LastName = model.LastName
                }
            };

            IdentityResult result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(new Tuple <IdentityResult, Guid>(result, Guid.Empty));
            }

            string role = GlobalInfo.Candidate;

            if (invite != null)
            {
                role = invite.RoleName;
                user.EmailConfirmed = true;
                await _invitesService.UseInviteAsync(model.InviteCode.Value, user.Id);
            }
            else
            {
                await SendConfirmEmailAsync(user);
            }

            await _userManager.AddToRoleAsync(user.Id, role);

            return(new Tuple <IdentityResult, Guid>(IdentityResult.Success, user.DomainId));
        }
示例#20
0
        public async Task <User> RegisterAccount(RegisterAccountRequest request)
        {
            var chk = await _unitOfWork.GetRepository <User>().FindAsync(x => x.Username == request.Username || x.Email == request.Email);

            if (chk == null)
            {
                var user = new User();
                user = _mapper.Map <User>(request);

                _unitOfWork.GetRepository <User>().Add(user);
                await _unitOfWork.CommitAsync();

                return(user);
            }
            return(null);
        }
            public async Task WhenRegisterReturnsFailedReturnsError()
            {
                var request = new RegisterAccountRequest
                {
                    Email = "*****@*****.**"
                };

                UserServiceMock
                .Setup(us => us.RegisterUserAsync(It.IsAny <RegisterAccountRequest>(), It.IsAny <string>()))
                .ReturnsAsync(RegisterAccountResult.Failed("Test Error"));

                var result = await Controller.RegisterAccount(request);

                var errorValue = TestUtils.GetValueFromResultObject <BadRequestObjectResult, SerializableError>(result);

                CollectionAssert.Contains(errorValue.Keys, string.Empty);
            }
示例#22
0
        public async Task <IHttpActionResult> Register(RegisterAccountRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _memberManager.RegisterAndSignInAsync(Mapper.Map <Registration>(request));

            if (result.HasErrors)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok());
        }
        public async Task <IHttpActionResult> Register(RegisterAccountRequest userModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IdentityResult result = await _authRepository.RegisterUser(userModel);

            IHttpActionResult errorResult = GetErrorResult(result);

            if (errorResult != null)
            {
                return(errorResult);
            }

            return(Ok(result));
        }
            public async Task WhenRegisterSucceedsReturnsSuccess()
            {
                var request = new RegisterAccountRequest
                {
                    Email = "*****@*****.**"
                };

                UserServiceMock
                .Setup(us => us.RegisterUserAsync(It.IsAny <RegisterAccountRequest>(), It.IsAny <string>()))
                .ReturnsAsync(RegisterAccountResult.Succeeded(new GametekiUser {
                    Settings = new UserSettings()
                }));

                var result = await Controller.RegisterAccount(request);

                var response = TestUtils.GetResponseFromResult <ApiResponse>(result);

                Assert.IsTrue(response.Success);
            }
示例#25
0
        public async Task <IActionResult> Register(RegisterAccountRequest registerAccountRequest)
        {
            if (!ModelState.IsValid)
            {
                return(View(registerAccountRequest));
            }
            var user = await _userManager.FindByNameAsync(registerAccountRequest.UserName);

            if (user != null)
            {
                return(View());
            }
            IdentityUser newuser = new IdentityUser(registerAccountRequest.UserName);
            var          result  = await _userManager.CreateAsync(newuser, registerAccountRequest.Password);

            if (!result.Succeeded)
            {
                return(View());
            }
            return(View());
        }
        public RegisterRequestResponse RegisterUser(RegisterAccountRequest request)
        {
            if (request == null)
            {
                return new RegisterRequestResponse {
                           ResponseCode = 422, ResponseMessage = "Null Request"
                }
            }
            ;
            if (_authRepository.UserAlreadyExists(request.Email) == false)
            {
                _authRepository.RegisterAccount(request);

                return(new RegisterRequestResponse {
                    ResponseCode = 200, ResponseMessage = "Ok"
                });
            }
            return(new RegisterRequestResponse {
                ResponseCode = 500, ResponseMessage = "Internal Server Error"
            });
        }
    }
示例#27
0
        public void RegisterAccount(RegisterAccountRequest request)
        {
            if (request == null)
            {
                return;
            }

            var accountToAdd = new AppAccount();

            accountToAdd.Email    = request.Email;
            accountToAdd.Password = request.Password;
            _appDbContext.T_IBS_App_Accounts.Add(accountToAdd);
            _appDbContext.SaveChanges();

            var customerToAdd = new Customer();

            customerToAdd.First_Name = request.FirstName;
            customerToAdd.Last_Name  = request.LastName;
            customerToAdd.CNP        = request.Cnp;
            customerToAdd.Age        = request.Age;
            _appDbContext.T_IBS_CUSTOMERS.Add(customerToAdd);
            _appDbContext.SaveChanges();

            var justAddedCustomer = from o in _appDbContext.T_IBS_CUSTOMERS
                                    select o.Id_Customer;

            var justAddedAcc = from o in _appDbContext.T_IBS_App_Accounts
                               select o.Id_App_Account;

            var jointAccount = new JoinCustomerAppAccounts();

            jointAccount.Id_Customer    = justAddedCustomer.ToList().Max();
            jointAccount.Id_App_Account = justAddedAcc.ToList().Max();
            _appDbContext.T_IBS_Join_Customers_App_Accounts.Add(jointAccount);
            _appDbContext.SaveChanges();
        }
        public async Task ShouldBeHttpStatusCodeOK()
        {
            var factory = TestHost;

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            const string email = "*****@*****.**";

            var request = new RegisterAccountRequest
            {
                Email    = email,
                Password = "******",
                Dob      = "01/01/1990",
                Country  = EnumCountryIsoCode.CA,
                Ip       = "127.0.0.1"
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                var user = await service.FindByEmailAsync(email);

                user.Should().NotBeNull();
            });
        }
            public async Task WhenActivationEnabledSendVerificationEmail()
            {
                var request = new RegisterAccountRequest
                {
                    Email = "*****@*****.**"
                };

                ApiOptions.Value.AccountVerification = true;

                UserServiceMock
                .Setup(us => us.RegisterUserAsync(It.IsAny <RegisterAccountRequest>(), It.IsAny <string>()))
                .ReturnsAsync(RegisterAccountResult.Succeeded(new GametekiUser {
                    Settings = new UserSettings()
                }));

                var result = await Controller.RegisterAccount(request);

                var response = TestUtils.GetResponseFromResult <ApiResponse>(result);

                Assert.IsTrue(response.Success);
                UserServiceMock.Verify(
                    us => us.SendActivationEmailAsync(It.IsAny <GametekiUser>(), It.IsAny <AccountVerificationModel>()),
                    Times.Once);
            }
示例#30
0
        public async Task <IActionResult> Register([FromBody] RegisterAccountRequest registerAccount)
        {
            var invite = await _inviteControllerService.GetInvite(registerAccount.InviteId);

            // username = email without special symbols
            Employee user = new Employee
            {
                UserName  = registerAccount.Email.Replace("@", "").Replace(".", "").Replace("-", ""),
                Email     = registerAccount.Email,
                FirstName = registerAccount.FirstName,
                LastName  = registerAccount.LastName,
                BossId    = invite.EmployeeId
            };

            try
            {
                var result = await _userManager.CreateAsync(user, registerAccount.Password);

                if (!result.Succeeded)
                {
                    Console.WriteLine("User -> " + registerAccount.Email + "  registration failed.");
                    //Log.Information("Registering user was unsuccessfull");
                    return(Conflict(result.Errors));
                }
                await _inviteControllerService.DeleteInvite(registerAccount.InviteId);

                Console.WriteLine("User -> " + registerAccount.Email + "  registered successfully!");
                //Log.Information("Registration succeeded");
                return(Ok(result.Succeeded));
            }
            catch (Exception exception)
            {
                //Log.Error(exception, "Failed to register user");
                return(StatusCode((int)HttpStatusCode.InternalServerError, "Failed to register user. Message: " + exception.Message));
            }
        }