示例#1
0
 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)));
 }
示例#2
0
            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);
            }
示例#3
0
            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);
            }
示例#4
0
            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);
            }
示例#5
0
 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();
 }
示例#6
0
            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);
            }