示例#1
0
        public async Task <IActionResult> Put(int id, EditUsuarioRequest request)
        {
            if (request.UsuarioId != id)
            {
                return(BadRequest());
            }

            request.UsuarioId = id;
            var result = await _usuarioService.EditUsuarioAsync(request);

            return(Ok(result));
        }
示例#2
0
        public Usuario Map(EditUsuarioRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            var usuario = new Usuario
            {
                UsuarioId      = request.UsuarioId,
                Nome           = request.Nome,
                Email          = request.Email,
                DataNascimento = request.DataNascimento,
                Senha          = request.Senha,
                SexoId         = request.SexoId,
                Ativo          = request.Ativo
            };

            return(usuario);
        }
示例#3
0
        public async Task <UsuarioResponse> EditUsuarioAsync(EditUsuarioRequest request)
        {
            var usuario = await _usuarioRepository.GetAsync(request.UsuarioId);

            if (usuario == null)
            {
                throw new ArgumentException($"Usuário com o ID {request.UsuarioId} não existe.");
            }

            if (await ValidaEmailDuplicadoAlteracaoAsync(usuario.Email, request.Email))
            {
                throw new ArgumentException($"Email {request.Email} já cadastrado.");
            }

            var entity = _usuarioMapper.Map(request);

            // Verifica se a senha foi alterada.
            // Caso afirmativo, gera e salva o novo hash e salt.
            if (!_securityService.ValidaSaltHash(request.Senha, usuario.Salt, usuario.Hash))
            {
                // gera novo hash e salt
                var saltHashSenha = _securityService.GeraSaltHash(request.Senha);
                entity.Salt = saltHashSenha.Item1;
                entity.Hash = saltHashSenha.Item2;
            }
            else
            {
                entity.Salt = usuario.Salt;
                entity.Hash = usuario.Hash;
            }

            var result = _usuarioRepository.Update(entity);

            await _usuarioRepository.UnitOfWork.SaveChangesAsync();

            _logger.LogInformation(
                Events.Edit,
                Messages.ChangesApplied_id, result?.UsuarioId);

            return(_usuarioMapper.Map(result));
        }