示例#1
0
        private async Task <IActionResult> clientReg(ClientRegistrationVm clientViewModel)
        {
            var user = new AppUser
            {
                UserName    = clientViewModel.UserName,
                Email       = clientViewModel.Email,
                PhoneNumber = clientViewModel.PhoneNumber ?? ""
            };

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

            if (result.Succeeded)
            {
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var callbackUrl = Url.Action(
                    action: "ConfirmEmail",
                    controller: "Auth",
                    values: new { userId = user.Id, code },
                    protocol: Request.Scheme);

                await _senderService.SendEmail(clientViewModel.Email, "Confirm your email",
                                               $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                await _clientService.InsertAsync(new Client { AppUser = user });

                await _userManager.AddToRolesAsync(user, new[] { "client" });

                await _signInManager.SignInAsync(user, isPersistent : false);

                TempData["Notification"] = "Please check your Email on new message";
                return(RedirectToAction("Index", "Home"));
            }

            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }

            var viewModel = new RegistrationViewModel
            {
                Specialist = new SpecialistRegistrationVm
                {
                    Cities = await _locationService.GetAllCitiesAsync()
                },
                IsClient = true
            };

            return(View("SignUp", viewModel));
        }
示例#2
0
        public async Task <IActionResult> SignUpClient(ClientRegistrationVm client)
        {
            if (!client.AgreedWithTerms)
            {
                ModelState.AddModelError(string.Empty, "Accept terms and conditions");
                var viewModel = new RegistrationViewModel
                {
                    Specialist = new SpecialistRegistrationVm
                    {
                        Cities = await _locationService.GetAllCitiesAsync()
                    },
                    IsClient = true
                };
                return(View("SignUp", viewModel));
            }

            if (!ModelState.IsValid)
            {
                ModelState.AddModelError(string.Empty, "Model state is invalid");
                var viewModel = new RegistrationViewModel
                {
                    Specialist = new SpecialistRegistrationVm
                    {
                        Cities = await _locationService.GetAllCitiesAsync()
                    },
                    IsClient = true
                };
                return(View("SignUp", viewModel));
            }

            var phoneCheck = _userManager.Users.Any(item => item.PhoneNumber == client.PhoneNumber);

            if (phoneCheck)
            {
                ModelState.AddModelError(string.Empty, "This Phone is used");
                var viewModel = new RegistrationViewModel
                {
                    Specialist = new SpecialistRegistrationVm
                    {
                        Cities = await _locationService.GetAllCitiesAsync()
                    },
                    IsClient = true
                };
                return(View("SignUp", viewModel));
            }

            return(await clientReg(client));
        }