예제 #1
0
        public async Task <BaseResponse> Inserir(RequestUsuario request)
        {
            try
            {
                _logger.LogInformation("Iniciando cadastro do usuário.");

                var valid = await ValidarRequest(new UsuarioValidator(), request);

                if (valid != null)
                {
                    return(valid);
                }


                var entity = _mapper.Map <Usuario>(request);
                entity.Senha          = HelpExtensions.Encrypt(request.Senha);
                entity.DataCadastro   = DateTime.Now;
                entity.PrimeiroAcesso = true;

                var response = await ObterStatusCode(
                    "Usuário cadastrado com sucesso.",
                    StatusCodes.Status201Created,
                    _mapper.Map <ResponseUsuario>(await _usuarioRepository.Inserir(entity)));

                _logger.LogInformation("Fim do usuário do livro.");

                return(response);
            }
            catch (Exception ex)
            {
                return(await ObterStatusCode("Erro ao usuário o livro", StatusCodes.Status400BadRequest, null, ex));
            }
        }
예제 #2
0
        public async Task <BaseResponse> Atualizar(RequestUsuario request)
        {
            try
            {
                _logger.LogInformation("Iniciando atualização do usuário.");

                var valid = await ValidarRequest(new UsuarioValidator(), request);

                if (valid != null)
                {
                    return(valid);
                }

                if (await _usuarioRepository.UsuarioCadastrado(request.Id))
                {
                    var entity = await _usuarioRepository.ObterPorId(request.Id);

                    var usuario = _mapper.Map <Usuario>(request);
                    usuario.PrimeiroAcesso = false;
                    usuario.DataCadastro   = entity.DataCadastro;
                    usuario.DataAlteracao  = DateTime.Now;

                    if (!string.IsNullOrEmpty(request.Senha))
                    {
                        usuario.Senha = HelpExtensions.Encrypt(request.Senha);
                    }

                    var response = await ObterStatusCode(
                        "Usuário atualizado com sucesso.",
                        StatusCodes.Status200OK,
                        _mapper.Map <ResponseUsuario>(await _usuarioRepository.Atualizar(usuario)));

                    _logger.LogInformation("Fim da atualização do usuário.");

                    return(response);
                }
                else
                {
                    return(await ObterStatusCode("Usuário informado não localizado.", StatusCodes.Status400BadRequest));
                }
            }
            catch (Exception ex)
            {
                return(await ObterStatusCode("Erro ao atualizar o usuário", StatusCodes.Status400BadRequest, null, ex));
            }
        }
예제 #3
0
        public async Task <BaseResponse> AutenticarUsuario(RequestLoginUsuario request)
        {
            try
            {
                _logger.LogInformation("Inicio autenticação do usuário");

                var senhaEncrypt = HelpExtensions.Encrypt(request.Senha);

                var usuario = await _usuarioRepository.ObterUsuario(request.Email, senhaEncrypt);

                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(_configuration.GetValue <string>("Secret"));
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[] {
                        new Claim(ClaimTypes.Name, usuario.Nome.ToString()),
                        new Claim(ClaimTypes.Email, usuario.Email.ToString())
                    }),
                    Expires            = DateTime.UtcNow.AddHours(2),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };

                var token = tokenHandler.CreateToken(tokenDescriptor) as JwtSecurityToken;

                ResponseLoginUsuario response = new ResponseLoginUsuario();
                response.IdUsuario = usuario.Id;
                response.Token     = token.RawData;

                _logger.LogInformation("Fim da autenticação do usuário");

                return(await ObterStatusCode("Autenticação realizada com sucesso.", StatusCodes.Status200OK, response));
            }
            catch (Exception ex)
            {
                return(await ObterStatusCode("Erro ao autenticar o usuário", StatusCodes.Status400BadRequest, null, ex));
            }
        }