Exemple #1
0
        public async Task <IActionResult> Login(VendorSignInVM thisModel)
        {
            System.Threading.Thread.Sleep(2000);
            ViewBag.LoginMessage = "";

            // ModelState.IsValid performs server side validation.
            // *ALWAYS* perform server side validation.
            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(thisModel.LoginVM.Email, thisModel.LoginVM.Password, thisModel.LoginVM.RememberMe, lockoutOnFailure : true);

                if (result.Succeeded)
                {
                    return(RedirectToAction("Index", "AllDiaryAds"));
                }
                else if (result.IsLockedOut)
                {
                    ViewBag.LoginMessage = "Login attempt locked out.";
                    return(View("Index", thisModel));
                }
                else if (result.IsNotAllowed)
                {
                    ViewBag.LoginMessage = "Please confirm your email before logging in.";
                    return(View("Index", thisModel));
                }
                ViewBag.LoginMessage = "Invalid user name or password.";
                return(View("Index", thisModel));
            }
            else
            {
                ViewBag.LoginMessage = "This entry is invalid.";
            }
            // return view with errors
            return(View("Index", thisModel));
        }
Exemple #2
0
        public async Task <IActionResult> Create(VendorSignInVM thisModel)
        {
            UserRoleRepo userRoleRepo = new UserRoleRepo(_serviceProvider);

            System.Threading.Thread.Sleep(2000);
            var user = new ApplicationUser {
                UserName = thisModel.RegisterVM.Email, Email = thisModel.RegisterVM.Email
            };
            var vendorUser = new Vendor {
                Name = thisModel.Vendor.Name, Address = thisModel.Vendor.Address, City = thisModel.Vendor.City, Province = thisModel.Vendor.Province, Monthly = thisModel.Vendor.Monthly, Priority = thisModel.Vendor.Priority, Website = thisModel.Vendor.Website, PostalCode = thisModel.Vendor.PostalCode
            };

            if (ModelState.IsValid)
            {
                var result = await _userManager.CreateAsync(user, thisModel.RegisterVM.Password);

                if (result.Succeeded)
                {
                    var userID = user.Id;
                    vendorUser.UserID = userID;
                    _context.Add(vendorUser);
                    await _context.SaveChangesAsync();


                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Link("Default", new { Controller = "Login", Action = "ConfirmEmail", userId = user.Id, code = code });

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

                    // here we assign the new user the "Vendor" role
                    await _userManager.AddToRoleAsync(user, "Vendor");

                    ViewBag.Email = thisModel.RegisterVM.Email;
                    return(View("Create", thisModel));
                }
                var errorList = new List <string>();
                foreach (var errors in result.Errors)
                {
                    errorList.Add(errors.Description);
                }
                ViewBag.ErrorMessage = errorList;
                // Reset the site key if there is an error.
                ViewData["SiteKey"] = _configuration["Authentication:Recaptcha:SiteKey"];
                return(View("Index", thisModel));
            }
            else
            {
                ViewData["SiteKey"] = _configuration["Authentication:Recaptcha:SiteKey"];
            }
            return(View("Index", thisModel));
        }