Beispiel #1
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var resultRe = await UserManager.CreateAsync(user);

                if (resultRe.Succeeded)
                {
                    // Add role
                    UserManager.AddToRole(user.Id, "customer");
                    // Create customer
                    var customerViewModel = new CustomerViewModel()
                    {
                        UserId       = user.Id,
                        Discount     = 0,
                        MaxDiscount  = 15,
                        StepDiscount = 2,
                        IsBlock      = false,
                        Name         = "",
                        Surname      = "",
                    };
                    var customerDto = MappingViewModel.MapCustomerDTO(customerViewModel);
                    _customerService.Register(customerDto);
                }
                if (resultRe.Succeeded)
                {
                    resultRe = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (resultRe.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(resultRe);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
Beispiel #2
0
        public async Task <ActionResult> Register(RegisterViewModel model, string yourName, string yourSurname)
        {
            if (string.IsNullOrEmpty(yourName) || string.IsNullOrEmpty(yourSurname) ||
                yourName.Length < 3 || yourSurname.Length < 3)
            {
                ModelState.AddModelError("strings", "Enter valid Name and Surname");
            }
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // Add role
                    UserManager.AddToRole(user.Id, "customer");
                    // Create customer
                    var customerViewModel = new CustomerViewModel()
                    {
                        UserId       = user.Id,
                        Discount     = 0,
                        MaxDiscount  = 15,
                        StepDiscount = 2,
                        IsBlock      = false,
                        Name         = yourName,
                        Surname      = yourSurname,
                    };
                    var customerDto = MappingViewModel.MapCustomerDTO(customerViewModel);
                    _customerService.Register(customerDto);
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }