public async Task<IHttpActionResult> Register(ApplicantRegistrationData model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var user = new ApplicationUser
            {
                UserName = model.Email,
                Email = model.Email,
                PhoneNumber = model.Phone,
                FirstName = model.FirstName,
                Surname = model.Surname,
            };

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

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

            result = await userManager.AddClaimAsync(user.Id,
                new Claim(ClaimTypes.Role, UserRole.External.ToString().ToLowerInvariant()));

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

            return Ok(user.Id);
        }
Example #2
0
        public async Task <ActionResult> ApplicantRegistration(ApplicantRegistrationViewModel model)
        {
            var response = await oauthClientCredentialClient().GetClientCredentialsAsync();

            if (ModelState.IsValid)
            {
                var applicantRegistrationData = new ApplicantRegistrationData
                {
                    Email           = model.Email,
                    FirstName       = model.Name,
                    Surname         = model.Surname,
                    Phone           = model.PhoneNumber,
                    Password        = model.Password,
                    ConfirmPassword = model.ConfirmPassword
                };

                try
                {
                    var userId = await client.Registration.RegisterApplicantAsync(response.AccessToken, applicantRegistrationData);

                    var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password);

                    authenticationManager.SignIn(signInResponse.GenerateUserIdentity());

                    var emailSent =
                        await
                        client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken,
                                                                       new EmailVerificationData
                    {
                        Url = Url.Action("VerifyEmail", "Account", null, Request.Url.Scheme)
                    });

                    var addressId =
                        await
                        client.SendAsync(signInResponse.AccessToken,
                                         new CreateAddress { Address = model.Address, UserId = userId });

                    applicantRegistrationData.AddressId = addressId;

                    return(RedirectToAction("SelectOrganisation", new { organisationName = model.OrganisationName }));
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }
                }

                await this.BindCountryList(client, response.AccessToken);

                return(View(model));
            }

            await this.BindCountryList(client, response.AccessToken);

            return(View(model));
        }
Example #3
0
        public async Task <IHttpActionResult> Register(ApplicantRegistrationData model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new ApplicationUser
            {
                UserName    = model.Email,
                Email       = model.Email,
                PhoneNumber = model.Phone,
                FirstName   = model.FirstName,
                Surname     = model.Surname,
            };

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

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

            result = await userManager.AddClaimAsync(user.Id,
                                                     new Claim(ClaimTypes.Role, UserRole.External.ToString().ToLowerInvariant()));

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

            return(Ok(user.Id));
        }
Example #4
0
        public async Task <string> RegisterApplicantAsync(string accessToken, ApplicantRegistrationData applicantRegistrationData)
        {
            httpClient.SetBearerToken(accessToken);

            var response = await httpClient.PostAsJsonAsync(Controller + "Register", applicantRegistrationData);

            return(await response.CreateResponseAsync <string>());
        }
        public async Task<ActionResult> ApplicantRegistration(ApplicantRegistrationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var applicantRegistrationData = new ApplicantRegistrationData
                {
                    Email = model.Email,
                    FirstName = model.Name,
                    Surname = model.Surname,
                    Phone = model.PhoneNumber,
                    Password = model.Password,
                    ConfirmPassword = model.ConfirmPassword
                };

                try
                {
                    var userId = await client.Registration.RegisterApplicantAsync(applicantRegistrationData);
                    var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password);
                    authenticationManager.SignIn(signInResponse.GenerateUserIdentity());

                    var emailSent =
                        await
                            client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken,
                                new EmailVerificationData
                                {
                                    Url = Url.Action("VerifyEmail", "Account", null, Request.Url.Scheme)
                                });

                    var addressId =
                        await
                            client.SendAsync(signInResponse.AccessToken,
                                new CreateAddress { Address = model.Address, UserId = userId });
                    applicantRegistrationData.AddressId = addressId;

                    return RedirectToAction("SelectOrganisation", new { organisationName = model.OrganisationName });
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }
                }

                await this.BindCountryList(client);
                return View(model);
            }

            await this.BindCountryList(client);
            return View(model);
        }
 public async Task<string> RegisterApplicantAsync(ApplicantRegistrationData applicantRegistrationData)
 {
     var response = await httpClient.PostAsJsonAsync(Controller + "Register", applicantRegistrationData);
     return await response.CreateResponseAsync<string>();
 }