public async Task <Unit> Handle(RecoveryPasswordValidateCommand request, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"Se va a cambiar la contraseña para el usuario {request.UserId}");
            var user = await _userManager.FindByIdAsync(request.UserId);

            if (user is null)
            {
                _logger.LogWarning($"El usuario {request.UserId} no existe en la base de datos");
                throw new NotFoundException(nameof(ApplicationUser), nameof(ApplicationUser.Id));
            }

            var code        = request.Code.Replace(" ", "+");
            var resetResult = await _userManager.ResetPasswordAsync(user, code, request.Password);

            if (!resetResult.Succeeded)
            {
                foreach (var error in resetResult.Errors)
                {
                    _logger.LogWarning(
                        $"Error al validar contraseña. Code: {error.Code}, Description: {error.Description}");
                    _validationFailureService.Add(nameof(error.Code), error.Description);
                }

                _validationFailureService.RaiseExceptionIfExistsErrors();
            }

            _logger.LogInformation($"El usuario {user.Id} ha restablecido la contraseña con éxito");

            return(Unit.Value);
        }
Beispiel #2
0
        public async Task <ApplicationUser> CreateUser(ApplicationUser applicationUser, string password)
        {
            await UserValidationAsync(applicationUser);
            await PasswordValidationAsync(applicationUser, password);
            await UserCreateAsync(applicationUser, password);

            _validationFailureService.RaiseExceptionIfExistsErrors();

            return(applicationUser);
        }
Beispiel #3
0
        private async Task ValidateDataIfExists(UpdateUserCommand request)
        {
            _logger.LogInformation($"Comprobar si el {nameof(request.UserName)} existe en la base de datos.");
            var user = await _userManager.Users.AnyAsync(u =>
                                                         u.UserName.ToLower() == request.UserName.ToLower() && u.Id != request.Id);

            if (user)
            {
                _validationFailureService.Add(nameof(request.UserName), _localizer["Nombre de usuario ya existe"]);
            }

            _logger.LogInformation(
                $"Comprobar si el {nameof(request.FirstName)} y {nameof(request.LastName)} existe en la base de datos.");

            user = await _userManager.Users.AnyAsync(u => u.FirstName.ToLower() == request.FirstName.ToLower() &&
                                                     u.LastName.ToLower() == request.LastName.ToLower() &&
                                                     u.Id != request.Id);

            if (user)
            {
                var message = _localizer["Ya existe un usuario con ese nombre y apellidos"];
                _validationFailureService.Add(nameof(request.FirstName), message);
                _validationFailureService.Add(nameof(request.LastName), message);
            }

            _logger.LogInformation($"Comprobar si el {nameof(request.Email)} existe en la base de datos.");
            user = await _userManager.Users.AnyAsync(u =>
                                                     u.Email.ToLower() == request.Email.ToLower() && u.Id != request.Id);

            if (user)
            {
                var message = _localizer["El existe un usuario con ese correo electrónico"];
                _validationFailureService.Add(nameof(request.Email), message);
            }

            _validationFailureService.RaiseExceptionIfExistsErrors();
        }