Example #1
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                User user = _userMapper.MapToUserModel(model);

                var creationResult = await _userManager.CreateAsync(user, model.Password);

                if (creationResult.Succeeded)
                {
                    string confirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    string confirmationLink = Url.Action(nameof(ConfirmEmail), "Account", new { userId = user.Id, token = confirmationToken }, "https");
                    await _mailSender.SendEmailConfirmationAsync(user.Email, confirmationLink);

                    var addingToRoleResult = await _userManager.AddToRoleAsync(user, "User");

                    if (addingToRoleResult.Succeeded)
                    {
                        return(RedirectToAction(nameof(RegistratedSuccessfully)));
                    }

                    AddErrors(addingToRoleResult);
                }

                AddErrors(creationResult);
            }

            return(View(model));
        }