public Validator( ArpaUserManager userManager) { RuleFor(c => c.UsernameOrEmail) .MustAsync(async(username, cancellation) => await userManager.FindUserByUsernameOrEmailAsync(username) != null) .OnFailure((request) => throw new NotFoundException(typeof(User).Name, nameof(Command.UsernameOrEmail))); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { User user = await _userManager.FindUserByUsernameOrEmailAsync(request.UsernameOrEmail); var token = await _userManager.GeneratePasswordResetTokenAsync(user); var param = new Dictionary <string, string> { { "token", token }, { "email", user.Email } }; var uri = QueryHelpers.AddQueryString(request.ClientUri, param); var template = new ResetPasswordTemplate { DisplayName = user.DisplayName, ArpaLogo = $"{_jwtConfiguration.Audience}/images/arpa_logo.png", ClientUri = uri, ClubAddress = _clubConfiguration.Address, ClubMail = _clubConfiguration.Email, ClubName = _clubConfiguration.Name, ClubPhoneNumber = _clubConfiguration.Phone }; await _emailSender.SendTemplatedEmailAsync(template, user.Email); return(Unit.Value); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { User user; if (string.IsNullOrEmpty(request.UsernameOrEmail)) { user = await _userAccessor.GetCurrentUserAsync(); } else { user = await _userManager.FindUserByUsernameOrEmailAsync(request.UsernameOrEmail); } var template = new PasswordChangedTemplate { DisplayName = user.DisplayName, ArpaLogo = $"{_jwtConfiguration.Audience}/images/arpa_logo.png", ClubAddress = _clubConfiguration.Address, ClubMail = _clubConfiguration.Email, ClubName = _clubConfiguration.Name, ClubPhoneNumber = _clubConfiguration.Phone }; await _emailSender.SendTemplatedEmailAsync(template, user.Email); return(Unit.Value); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { User user = await _userManager.FindUserByUsernameOrEmailAsync(request.UsernameOrEmail); if (await _userManager.IsEmailConfirmedAsync(user)) { throw new ValidationException(new[] { new ValidationFailure(nameof(request.UsernameOrEmail), "The email address is already confirmed") }); } var token = await _userManager.GenerateEmailConfirmationTokenAsync(user); var param = new Dictionary <string, string> { { "token", token }, { "email", user.Email } }; var uri = QueryHelpers.AddQueryString(request.ClientUri, param); var template = new ConfirmEmailTemplate { DisplayName = user.DisplayName, ArpaLogo = $"{_jwtConfiguration.Audience}/images/arpa_logo.png", ClientUri = uri, ClubAddress = _clubConfiguration.Address, ClubMail = _clubConfiguration.Email, ClubName = _clubConfiguration.Name, ClubPhoneNumber = _clubConfiguration.Phone }; await _emailSender.SendTemplatedEmailAsync(template, user.Email); return(Unit.Value); }
public Validator(ArpaUserManager userManager) { RuleFor(q => q.UsernameOrEmail) .MustAsync(async(userName, cancellation) => await userManager.FindUserByUsernameOrEmailAsync(userName) != null) .OnFailure(request => throw new AuthenticationException("The system could not log you in. Please enter a valid user name and password")); RuleFor(q => q.RemoteIpAddress) .NotEmpty(); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { User user = await _userManager.FindUserByUsernameOrEmailAsync(request.UsernameOrEmail); IdentityResult resetPasswordResult = await _userManager.ResetPasswordAsync(user, request.Token, request.Password); if (resetPasswordResult.Succeeded) { return(Unit.Value); } if (resetPasswordResult.Errors.FirstOrDefault()?.Description.Contains("Invalid token") == true) { throw new ValidationException(new ValidationFailure[] { new ValidationFailure(nameof(request.Token), "The supplied token is invalid or has expired") }); } throw new IdentityException("Problem resetting password", resetPasswordResult.Errors); }