Example #1
0
        public ActionResult RegisterConfirmation(RegisterConfirmationViewModel rcvm)
        {
            RegisterConfirmationPartialModel rcpm             = new RegisterConfirmationPartialModel();
            ApplicationDbContext             dbContext        = new ApplicationDbContext();
            List <ApplicationUser>           unconfirmedUsers = new List <ApplicationUser>();

            unconfirmedUsers = dbContext.Users.Where(m => !m.EmailConfirmed).ToList();
            if (!String.IsNullOrEmpty(rcvm.SearchPhrase))
            {
                unconfirmedUsers = unconfirmedUsers.Where(a => a.Name.ToLower().Contains(rcvm.SearchPhrase.ToLower()) || a.Surname.ToLower().Contains(rcvm.SearchPhrase.ToLower()) || a.Affiliation.ToLower().Contains(rcvm.SearchPhrase.ToLower())).ToList();
            }
            switch (rcvm.SortBy)
            {
            case UserSortBy.Name:
                unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Name).ToList();
                break;

            case UserSortBy.Surname:
                unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Surname).ToList();
                break;

            case UserSortBy.Affiliation:
                unconfirmedUsers = unconfirmedUsers.OrderBy(r => r.Affiliation).ToList();
                break;
            }
            rcpm.MaxPages         = (int)Math.Ceiling((double)unconfirmedUsers.Count / (double)rcvm.ResultsForPage);
            rcpm.UnconfirmedUsers = unconfirmedUsers.Skip((rcvm.CurrentPage - 1) * rcvm.ResultsForPage).Take(rcvm.ResultsForPage).ToList();
            return(PartialView("_RegisterConfirmation", rcpm));
        }
Example #2
0
        public async Task <IActionResult> RegisterConfirmation(RegisterConfirmationViewModel model, string returnUrl = null)
        {
            if (model.UserId == null || model.Code == null)
            {
                throw new ApplicationException("User Id and code shouldn't be null.");
            }

            var user = await _userManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{model.UserId}'.");
            }

            if (ModelState.IsValid)
            {
                user.PasswordHash = _userManager.PasswordHasher.HashPassword(user, model.Password);
                var result = await _userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    result = _userManager.AddClaimsAsync(user, new Claim[] {
                        new Claim(JwtClaimTypes.GivenName, model.FirstName),
                        new Claim(JwtClaimTypes.FamilyName, model.LastName),
                        new Claim(JwtClaimTypes.Name, model.FirstName + " " + model.LastName),
                        new Claim("RegisterConfirmationDateTimeOffsetUtc", DateTimeOffset.UtcNow.ToString())
                    }).Result;

                    if (!result.Succeeded)
                    {
                        throw new Exception(result.Errors.First().Description);
                    }

                    _logger.LogInformation("User details updated.");

                    var confirmationResult = await _userManager.ConfirmEmailAsync(user, model.Code);

                    if (confirmationResult.Succeeded)
                    {
                        return(Redirect(_portalConfig.RegistrationConfirmedRedirectUri));
                    }

                    /* Failed to confirm email code. */
                    return(View("Error"));
                }

                /* Failed to update user details. */
                return(View("Error"));
            }

            ViewData["UserId"]    = model.UserId;
            ViewData["Code"]      = model.Code;
            ViewData["ReturnUrl"] = returnUrl;

            /* If we got this far, something failed, redisplay form. */
            return(View(model));
        }
Example #3
0
        public ActionResult RegisterConfirmation()
        {
            RegisterConfirmationViewModel rcVM      = new RegisterConfirmationViewModel();
            ApplicationDbContext          dbContext = new ApplicationDbContext();

            rcVM.UnconfirmedUsers = dbContext.Users.Where(m => !m.EmailConfirmed).OrderBy(a => a.Surname).Take(10).ToList();
            rcVM.CurrentPage      = 1;
            rcVM.ResultsForPage   = 10;
            rcVM.SortBy           = Enums.UserSortBy.Surname;
            rcVM.NumberOfPages    = (int)Math.Ceiling((double)dbContext.Users.Where(m => !m.EmailConfirmed).Count() / rcVM.ResultsForPage);
            return(View(rcVM));
        }
        public async Task <IActionResult> Confirmation(string email)
        {
            if (email == null)
            {
                return(this.RedirectToAction("Index"));
            }

            var user = await this._userService.GetByEmailAsync(email);

            if (user == null)
            {
                return(this.NotFound($"Unable to load user with email '{email}'."));
            }

            var viewModel = new RegisterConfirmationViewModel();

            viewModel.DisplayConfirmAccountLink = false;

            return(this.View(viewModel));
        }
        public async Task <IActionResult> RegisterConfirmationAsync(string email)
        {
            if (email == null)
            {
                return(BadRequest());
            }

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound($"Unable to load user with email '{email}'."));
            }

            var model = new RegisterConfirmationViewModel()
            {
                Email = email,
            };

            return(View(model));
        }
Example #6
0
        public async Task <IActionResult> RegisterConfirmation(string email, string returnUrl = null)
        {
            if (email == null)
            {
                return(RedirectToAction(nameof(Register)));
            }

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound($"Unable to load user with email '{email}'."));
            }
            var registerConfirmationViewModel = new RegisterConfirmationViewModel()
            {
                Email = email,
                DisplayConfirmAccountLink = true//set to true if you want to display page for registerconfirmation
            };

            //TODO: add email sender and confirmation https://app.sendgrid.com/

            if (registerConfirmationViewModel.DisplayConfirmAccountLink)
            {
                var userId = await _userManager.GetUserIdAsync(user);

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                registerConfirmationViewModel.EmailConfirmationUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new { area = "Identity", userId = userId, code = code, returnUrl = returnUrl },
                    protocol: Request.Scheme);
            }

            return(View(registerConfirmationViewModel));
        }
Example #7
0
        public async Task <IActionResult> RegisterConfirmation(string email)
        {
            if (email == null)
            {
                return(Redirect("~/"));
            }

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound($"Unable to load user with email '{email}'."));
            }

            var vm = new RegisterConfirmationViewModel
            {
                Email = email,
#if DEBUG
                // Once you add a real email sender, you should remove this code that lets you confirm the account
                DisplayConfirmAccountLink = true
#endif
            };

            if (!vm.DisplayConfirmAccountLink)
            {
                return(View(vm));
            }

            var userId = await _userManager.GetUserIdAsync(user);

            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

            code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
            vm.EmailConfirmationUrl = Url.Action("ConfirmEmail", new { userId, code });

            return(View(vm));
        }
Example #8
0
        public async Task <IActionResult> RegisterConfirmation(string email, string returnUrl)
        {
            if (email == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound($"Không có user với email: '{email}'."));
            }

            if (user.EmailConfirmed)
            {
                // Tài khoản đã xác thực email
                return(RedirectToAction("Index", "Home"));
            }

            var model = new RegisterConfirmationViewModel
            {
                Email = email
            };

            if (returnUrl != null)
            {
                model.UrlContinue = Url.Action("ConfirmEmail", "Account", new { email = model.Email, returnUrl = returnUrl });
            }
            else
            {
                model.UrlContinue = Url.Action("ConfirmEmail", "Account", new { email = model.Email });
            }

            return(View(model));
        }