예제 #1
0
        public async Task <IActionResult> Register(AccountRegisterModel register)
        {
            var u = await _userManager.FindByEmailAsync(register.Email ?? "");

            if (u != null)
            {
                ModelState.AddModelError("Email", "Email is already taken");
            }
            else if (ModelState.IsValid)
            {
                var user   = _mapper.AccountRegisterModelToApplicationUser(register);
                var result = await _userManager.CreateAsync(user, register.Password);

                if (result.Succeeded)
                {
                    var loginModel = new AccountLoginModel
                    {
                        Email    = register.Email,
                        Password = register.Password,
                    };
                    await _userManager.AddToRoleAsync(user, "Customer");

                    if (!_signInManager.IsSignedIn(User))
                    {
                        await _signInManager.PasswordSignInAsync(user, register.Password, false, false);
                    }
                    if (!string.IsNullOrEmpty(register.ReturnUrl))
                    {
                        return(Redirect(register.ReturnUrl));
                    }
                    return(RedirectToAction("Index", "Home"));
                }
            }

            return(View(register));
        }