Пример #1
0
 public Task SendResetPasswordConfirmation(string confirmationLink, CharityUser user)
 {
     _emailService.SendAsync(
         user.Email,
         $"{user.Name}, zlecono zmianę hasła",
         "<h3>Otrzymujesz ten email, bo uruchomiono opcję resetowania hasła do serwisu 'Charity'</h3><br />" +
         $"Kliknij <a href=\"{confirmationLink}\">link</a>, by potwierdzić operację<br />" +
         "Nastąpi przekierowanie do formularza zmiany hasła.<br />" +
         "Zignoruj tę wiadomość, jeśli nie zlecełeś(aś) operacji.",
         true);
     return(Task.CompletedTask);
 }
Пример #2
0
 public Task SendRegistrationConfirmation(string confirmationLink, CharityUser user)
 {
     _emailService.SendAsync(
         user.Email,
         //"*****@*****.**",
         $"{user.Name}, potwierdź rejestrację",
         "<h3>Kliknij link, by potwierdzić rejestrację do serwisu 'Charity'</h3><br />" +
         $"<a href=\"{confirmationLink}\">Potwierdź adres email</a><br />" +
         "Zignoruj tę wiadomość, jeśli nie dokowywałeś(aś) rejestracji.",
         true);
     return(Task.CompletedTask);
 }
Пример #3
0
        public async Task <IActionResult> Registration(RegistrationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                if (!_userManagerService.IsEmailUnique(model.Email))
                {
                    ModelState.AddModelError("", "Ten adres email jest już zarejestrowany");
                    return(View(model));
                }

                var random = new Random();
                var user   = new CharityUser()
                {
                    Name    = model.Name,
                    Surname = model.Surname,
                    Email   = model.Email,
                };
                user.UserName           = $"{user.Name}{user.Surname}";
                user.UserName           = RemoveDiacritics(user.UserName);
                user.UserName           = RemoveNotLetterNorDigit(user.UserName);
                user.UserName          += random.Next(1000).ToString("D3");
                user.NormalizedUserName = user.UserName.ToUpper();
                user.NormalizedEmail    = user.Email.ToUpper();

                // Create user
                var createUserResult = await _userManager.CreateAsync(user, model.Password);

                if (createUserResult.Succeeded)
                {
                    await _userManager.AddToRoleAsync(user, "User");

                    _logger.LogInformation("Created user with email {User}.", user.Email);
                    // Prepare token & send it via email
                    _ = GenerateAndSendEmailConfirmationToken(user);
                    return(RedirectToAction(nameof(ConfirmRegistration)));
                }

                ModelState.AddModelError("", "Nie udało się dodać użytkownika");
                return(View(model));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error creating user.");
            }

            return(View(model));
        }
Пример #4
0
        private async Task GenerateAndSendEmailConfirmationToken(CharityUser user)
        {
            var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

            var confirmationLink = Url.Action(
                nameof(RegistrationConfirmed),
                nameof(Account),
                new { token, user = user.Id },
                Request.Scheme,
                Request.Host.ToString());

            _ = _emailService.SendRegistrationConfirmation(confirmationLink, user);
        }
Пример #5
0
        public async Task <IActionResult> Register([FromForm] RegisterInputModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new CharityUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    //var callbackUrl = Url.Page(
                    //    "/Account/ConfirmEmail",
                    //    pageHandler: null,
                    //    values: new { area = "Identity", userId = user.Id, code = code },
                    //    protocol: Request.Scheme);

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

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(Content($"confirmation required ({model.Email})"));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(PartialView("_RegistrationSuccessPartial"));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, ErrorMessages.ResourceManager.GetString(error.Code));
                }
            }

            // If we got this far, something failed, redisplay form
            return(PartialView("Register"));
        }
 public async Task ConfirmEmailAsync(CharityUser user)
 {
     _context.Users.FirstOrDefault(u => u.Email == user.Email).EmailConfirmed = true;
     await _context.SaveChangesAsync();
 }