コード例 #1
0
ファイル: AccountController.cs プロジェクト: venom3333/CPK2
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _loginService.FindByUsername(model.Email);

                if (await _loginService.ValidateCredentials(user, model.Password))
                {
                    if (user.EmailConfirmed)
                    {
                        await SigninAsync(user, model.ReturnUrl, model.RememberMe).ConfigureAwait(false);

                        // make sure the returnUrl is still valid, and if yes - redirect back to authorize endpoint
                        if (_interaction.IsValidReturnUrl(model.ReturnUrl))
                        {
                            return(Redirect(model.ReturnUrl));
                        }

                        return(Redirect("~/"));
                    }
                    else
                    {
                        ModelState.AddModelError("", ConstantMessages.RegisterConfirmationMessage(model.Email));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Не верные логин или пароль");
                }
            }

            // something went wrong, show form with error
            var vm = await BuildLoginViewModelAsync(model);

            ViewData["ReturnUrl"] = model.ReturnUrl;

            return(View(vm));
        }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: venom3333/CPK2
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName = model.Email,
                    Email    = model.Email,
                    //CardHolderName = model.User.CardHolderName,
                    //CardNumber = model.User.CardNumber,
                    //CardType = model.User.CardType,
                    //City = model.User.City,
                    //Country = model.User.Country,
                    //Expiration = model.User.Expiration,
                    //LastName = model.User.LastName,
                    //Name = model.User.Name,
                    //Street = model.User.Street,
                    //State = model.User.State,
                    //ZipCode = model.User.ZipCode,
                    //PhoneNumber = model.User.PhoneNumber,
                    //SecurityNumber = model.User.SecurityNumber
                };

                var userDto = await _userManager.FindByNameAsync(user.UserName).ConfigureAwait(false);

                if (userDto != null &&
                    !userDto.EmailConfirmed && // не подтвержден
                    userDto.Created < DateTime.Now - TimeSpan.FromHours(Config.UserMailConfirmTimeHours)
                    ) // и висит больше суток
                {
                    var deleteResult = await _userManager.DeleteAsync(userDto).ConfigureAwait(false);

                    if (deleteResult.Errors.Any())
                    {
                        AddErrors(deleteResult);
                        // If we got this far, something failed, redisplay form
                        return(View(model));
                    }
                }

                var result = await _userManager.CreateAsync(user, model.Password).ConfigureAwait(false);

                if (result.Errors.Any())
                {
                    AddErrors(result);
                    // If we got this far, something failed, redisplay form
                    return(View(model));
                }

                userDto = await _userManager.FindByNameAsync(user.UserName).ConfigureAwait(false);

                await _userManager.AddToRoleAsync(userDto, "user").ConfigureAwait(false);

                // отправка емейла для подтверждения (в линк закладываем id юзера, hashCheck - хэш пароля, returnUrl - урл магазина, куда редиректнем после логина)
                // ...
                var token = await _userManager.GenerateEmailConfirmationTokenAsync(userDto).ConfigureAwait(false);

                var link = GetConfirmationLink(userDto.Id, token, returnUrl);

                // TODO: Отправка email
                // await _emailSender.SendAsync(user.Id,
                //     "Подтверждение регистрации",
                //     $"Пожалуйста подтвердите регистрацию кликнув по ссылке: <a href=\"{link}\">Подтвердить</a>");
            }


            ViewBag.Message = ConstantMessages.RegisterConfirmationMessage(model.Email);
            return(View("Success"));
        }