Commit 57e202b89967f1cf4c8bccc5761c22060c98b4b8

Authored by André Souza
2 parents 894ad270 53f69354
Exists in master and in 1 other branch desenv

Merge branch 'master' of http://softwarepublico.gov.br/gitlab/mp/mod-wssei

controlador_ws.php
@@ -65,10 +65,36 @@ $app->group('/api/v1',function(){ @@ -65,10 +65,36 @@ $app->group('/api/v1',function(){
65 /** @var $response Slim\Http\Response */ 65 /** @var $response Slim\Http\Response */
66 $rn = new MdWsSeiUsuarioRN(); 66 $rn = new MdWsSeiUsuarioRN();
67 $usuarioDTO = new UsuarioDTO(); 67 $usuarioDTO = new UsuarioDTO();
  68 + $contextoDTO = new ContextoDTO();
68 $usuarioDTO->setStrSigla($request->getParam('usuario')); 69 $usuarioDTO->setStrSigla($request->getParam('usuario'));
69 $usuarioDTO->setStrSenha($request->getParam('senha')); 70 $usuarioDTO->setStrSenha($request->getParam('senha'));
  71 + $contextoDTO->setNumIdContexto($request->getParam('contexto'));
  72 + $contextoDTO->setNumIdOrgao($request->getParam('orgao'));
70 73
71 - return $response->withJSON($rn->autenticar($usuarioDTO)); 74 + return $response->withJSON($rn->apiAutenticar($usuarioDTO, $contextoDTO));
  75 + });
  76 + /**
  77 + * Grupo de controlador de Órgão <publico>
  78 + */
  79 + $this->group('/orgao', function(){
  80 + $this->get('/listar', function($request, $response, $args){
  81 + /** @var $request Slim\Http\Request */
  82 + $rn = new MdWsSeiOrgaoRN();
  83 + $dto = new OrgaoDTO();
  84 + return $response->withJSON($rn->listarOrgao($dto));
  85 + });
  86 + });
  87 + /**
  88 + * Grupo de controlador de Contexto <publico>
  89 + */
  90 + $this->group('/contexto', function(){
  91 + $this->get('/listar/{orgao}', function($request, $response, $args){
  92 + /** @var $request Slim\Http\Request */
  93 + $rn = new MdWsSeiContextoRN();
  94 + $dto = new OrgaoDTO();
  95 + $dto->setNumIdOrgao($request->getAttribute('route')->getArgument('orgao'));
  96 + return $response->withJSON($rn->listarContexto($dto));
  97 + });
72 }); 98 });
73 99
74 /** 100 /**
rn/MdWsSeiContextoRN.php 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +<?
  2 +require_once dirname(__FILE__).'/../../../SEI.php';
  3 +
  4 +class MdWsSeiContextoRN extends InfraRN {
  5 +
  6 + protected function inicializarObjInfraIBanco(){
  7 + return BancoSEI::getInstance();
  8 + }
  9 +
  10 + /**
  11 + * Retorna a lista de contextos por orgao
  12 + * @return array
  13 + */
  14 + protected function listarContextoConectado(OrgaoDTO $orgaoDTO){
  15 + try{
  16 + if(!$orgaoDTO->isSetNumIdOrgao()){
  17 + throw new Exception('O órgão do contexto deve ser informado!');
  18 + }
  19 + $result = array();
  20 + $contextoRN = new ContextoRN();
  21 + $contextDTOConsulta = new ContextoDTO();
  22 + $contextDTOConsulta->retNumIdContexto();
  23 + $contextDTOConsulta->retStrNome();
  24 + $contextDTOConsulta->retStrDescricao();
  25 + $contextDTOConsulta->retStrBaseDnLdap();
  26 + $contextDTOConsulta->setStrSinAtivo('S');
  27 + $contextDTOConsulta->setNumIdOrgao($orgaoDTO->getNumIdOrgao());
  28 + $ret = $contextoRN->listar($contextDTOConsulta);
  29 + /** @var ContextoDTO $contextoDTO */
  30 + foreach($ret as $contextoDTO){
  31 + $result[] = array(
  32 + 'id' => $contextoDTO->getNumIdContexto(),
  33 + 'nome' => $contextoDTO->getStrNome(),
  34 + 'descricao' => $contextoDTO->getStrDescricao(),
  35 + 'base_dn_ldap' => $contextoDTO->getStrBaseDnLdap(),
  36 + );
  37 + }
  38 +
  39 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  40 + }catch (Exception $e){
  41 + return MdWsSeiRest::formataRetornoErroREST($e);
  42 + }
  43 + }
  44 +
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
rn/MdWsSeiDocumentoRN.php
@@ -232,8 +232,10 @@ class MdWsSeiDocumentoRN extends InfraRN { @@ -232,8 +232,10 @@ class MdWsSeiDocumentoRN extends InfraRN {
232 } 232 }
233 $documentoDTOConsulta = new DocumentoDTO(); 233 $documentoDTOConsulta = new DocumentoDTO();
234 $documentoDTOConsulta->setDblIdProtocoloProtocolo($protocoloDTOParam->getDblIdProtocolo()); 234 $documentoDTOConsulta->setDblIdProtocoloProtocolo($protocoloDTOParam->getDblIdProtocolo());
  235 + $documentoDTOConsulta->setStrStaDocumento(DocumentoRN::$TD_EDITOR_INTERNO);
235 $documentoDTOConsulta->retDblIdDocumento(); 236 $documentoDTOConsulta->retDblIdDocumento();
236 $documentoDTOConsulta->retStrConteudo(); 237 $documentoDTOConsulta->retStrConteudo();
  238 + $documentoDTOConsulta->retStrStaDocumento();
237 $documentoDTOConsulta->retStrConteudoAssinatura(); 239 $documentoDTOConsulta->retStrConteudoAssinatura();
238 $documentoBD = new DocumentoRN(); 240 $documentoBD = new DocumentoRN();
239 $resultDocumento = $documentoBD->listarRN0008($documentoDTOConsulta); 241 $resultDocumento = $documentoBD->listarRN0008($documentoDTOConsulta);
rn/MdWsSeiOrgaoRN.php
@@ -10,28 +10,22 @@ class MdWsSeiOrgaoRN extends InfraRN { @@ -10,28 +10,22 @@ class MdWsSeiOrgaoRN extends InfraRN {
10 /** 10 /**
11 * Retorna todos os orgaos ativos cadastrados 11 * Retorna todos os orgaos ativos cadastrados
12 * @param OrgaoDTO $orgaoDTO 12 * @param OrgaoDTO $orgaoDTO
13 - * @info para p�ginacao e necess�rio informar dentro do DTO os parametros abaixo:  
14 - * - setNumMaxRegistrosRetorno  
15 - * - setNumPaginaAtual  
16 * @return array 13 * @return array
17 */ 14 */
18 - protected function listarOrgaoConectado(OrgaoDTO $orgaoDTO){ 15 + protected function listarOrgaoConectado(OrgaoDTO $orgaoDTOParam){
19 try{ 16 try{
20 $result = array(); 17 $result = array();
21 - $orgaoRN = new OrgaoRN();  
22 - if(!$orgaoDTO->isRetNumIdOrgao()){  
23 - $orgaoDTO->retNumIdOrgao();  
24 - }  
25 - if(!$orgaoDTO->isRetStrSigla()){  
26 - $orgaoDTO->retStrSigla();  
27 - }  
28 - if(!$orgaoDTO->isRetStrDescricao()){  
29 - $orgaoDTO->retStrDescricao();  
30 - }  
31 - if(!$orgaoDTO->isSetStrSinAtivo()){  
32 - $orgaoDTO->setStrSinAtivo('S');  
33 - }  
34 - $ret = $orgaoRN->listarRN1353($orgaoDTO); 18 + $orgaoDTO = new OrgaoDTO();
  19 + $orgaoDTO->retNumIdOrgao();
  20 + $orgaoDTO->retStrSigla();
  21 + $orgaoDTO->retStrDescricao();
  22 + $orgaoDTO->setStrSinAtivo('S');
  23 +
  24 + //Chamada Direta ao BD devido a ponta ser um serviço público sem autenticação.
  25 +
  26 + $orgaoBD = new OrgaoBD($this->getObjInfraIBanco());
  27 + $ret = $orgaoBD->listar($orgaoDTO);
  28 +
35 /** @var OrgaoDTO $orgDTO */ 29 /** @var OrgaoDTO $orgDTO */
36 foreach($ret as $orgDTO){ 30 foreach($ret as $orgDTO){
37 $result[] = array( 31 $result[] = array(
@@ -41,7 +35,7 @@ class MdWsSeiOrgaoRN extends InfraRN { @@ -41,7 +35,7 @@ class MdWsSeiOrgaoRN extends InfraRN {
41 ); 35 );
42 } 36 }
43 37
44 - return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $orgaoDTO->getNumTotalRegistros()); 38 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
45 }catch (Exception $e){ 39 }catch (Exception $e){
46 return MdWsSeiRest::formataRetornoErroREST($e); 40 return MdWsSeiRest::formataRetornoErroREST($e);
47 } 41 }
rn/MdWsSeiUsuarioRN.php
@@ -50,7 +50,7 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -50,7 +50,7 @@ class MdWsSeiUsuarioRN extends InfraRN {
50 $fase2 = str_replace($this->getSecret(), '', $fase1); 50 $fase2 = str_replace($this->getSecret(), '', $fase1);
51 $fase3 = base64_decode($fase2); 51 $fase3 = base64_decode($fase2);
52 $tokenData = explode('||', $fase3); 52 $tokenData = explode('||', $fase3);
53 - if(count($tokenData) != 2){ 53 + if(count($tokenData) != 4){
54 return null; 54 return null;
55 } 55 }
56 $tokenData[0] = $this->decriptaSenha($tokenData[0]); 56 $tokenData[0] = $this->decriptaSenha($tokenData[0]);
@@ -60,13 +60,23 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -60,13 +60,23 @@ class MdWsSeiUsuarioRN extends InfraRN {
60 } 60 }
61 61
62 /** 62 /**
63 - * M?todo que criptografa o token 63 + * Método que criptografa o token
64 * @param $sigla 64 * @param $sigla
65 * @param $senha 65 * @param $senha
  66 + * @param null $orgao
  67 + * @param null $contexto
66 * @return string 68 * @return string
67 */ 69 */
68 - public function tokenEncode($sigla, $senha){  
69 - $token = base64_encode($this->getSecret().base64_encode($this->encriptaSenha($sigla).'||'.$this->encriptaSenha($senha))); 70 + public function tokenEncode($sigla, $senha, $orgao = null, $contexto = null){
  71 + $token = base64_encode(
  72 + $this->getSecret()
  73 + .base64_encode(
  74 + $this->encriptaSenha($sigla)
  75 + .'||'.$this->encriptaSenha($senha)
  76 + .'||'.$orgao
  77 + .'||'.$contexto
  78 + )
  79 + );
70 80
71 return $token; 81 return $token;
72 } 82 }
@@ -106,13 +116,15 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -106,13 +116,15 @@ class MdWsSeiUsuarioRN extends InfraRN {
106 116
107 $tokenData = $this->tokenDecode($token); 117 $tokenData = $this->tokenDecode($token);
108 if(!$tokenData){ 118 if(!$tokenData){
109 - throw new InfraException('Token inv?lido!'); 119 + throw new InfraException('Token inválido!');
110 } 120 }
111 -  
112 $usuarioDTO = new UsuarioDTO(); 121 $usuarioDTO = new UsuarioDTO();
113 $usuarioDTO->setStrSigla($tokenData[0]); 122 $usuarioDTO->setStrSigla($tokenData[0]);
114 $usuarioDTO->setStrSenha($tokenData[1]); 123 $usuarioDTO->setStrSenha($tokenData[1]);
115 - $result = $this->autenticar($usuarioDTO); 124 + $contextoDTO = new ContextoDTO();
  125 + $contextoDTO->setNumIdOrgao($tokenData[2]);
  126 + $contextoDTO->setNumIdContexto($tokenData[3]);
  127 + $result = $this->apiAutenticar($usuarioDTO, $contextoDTO);
116 if(!$result['sucesso']){ 128 if(!$result['sucesso']){
117 return $result; 129 return $result;
118 } 130 }
@@ -131,9 +143,12 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -131,9 +143,12 @@ class MdWsSeiUsuarioRN extends InfraRN {
131 * @param $senha 143 * @param $senha
132 * @param $IdOrgao 144 * @param $IdOrgao
133 */ 145 */
134 - protected function autenticarConectado(UsuarioDTO $usuarioDTO){ 146 + public function apiAutenticar(UsuarioDTO $usuarioDTO, ContextoDTO $contextoDTO){
135 try{ 147 try{
136 - if(!$usuarioDTO->isSetNumIdOrgao()){ 148 + $contexto = $contextoDTO->getNumIdContexto();
  149 + $orgao = $contextoDTO->getNumIdOrgao();
  150 + $siglaOrgao = null;
  151 + if(!$orgao){
137 $orgaoRN = new OrgaoRN(); 152 $orgaoRN = new OrgaoRN();
138 $objOrgaoDTO = new OrgaoDTO(); 153 $objOrgaoDTO = new OrgaoDTO();
139 $objOrgaoDTO->setBolExclusaoLogica(false); 154 $objOrgaoDTO->setBolExclusaoLogica(false);
@@ -144,16 +159,27 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -144,16 +159,27 @@ class MdWsSeiUsuarioRN extends InfraRN {
144 * Orgao da sessao do sistema 159 * Orgao da sessao do sistema
145 */ 160 */
146 $orgaoCarregdo = $orgaoRN->consultarRN1352($objOrgaoDTO); 161 $orgaoCarregdo = $orgaoRN->consultarRN1352($objOrgaoDTO);
147 - $usuarioDTO->setNumIdOrgao($orgaoCarregdo->getNumIdOrgao()); 162 + $orgao = $orgaoCarregdo->getNumIdOrgao();
  163 + $siglaOrgao = ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaOrgaoSistema');
148 } 164 }
  165 + if(!$siglaOrgao){
  166 + $orgaoRN = new OrgaoRN();
  167 + $objOrgaoDTO = new OrgaoDTO();
  168 + $objOrgaoDTO->setBolExclusaoLogica(false);
  169 + $objOrgaoDTO->retStrSigla();
  170 + $objOrgaoDTO->setNumIdOrgao($orgao);
  171 + $objOrgaoDTO = $orgaoRN->consultarRN1352($objOrgaoDTO);
  172 + $siglaOrgao = $objOrgaoDTO->getStrSigla();
  173 + }
  174 +
149 $objSipWs = $this->retornaServicoSip(); 175 $objSipWs = $this->retornaServicoSip();
150 $ret = $objSipWs->autenticarCompleto( 176 $ret = $objSipWs->autenticarCompleto(
151 - $usuarioDTO->getNumIdOrgao(),  
152 - null, 177 + $orgao,
  178 + $contexto,
153 $usuarioDTO->getStrSigla(), 179 $usuarioDTO->getStrSigla(),
154 $this->encriptaSenha($usuarioDTO->getStrSenha()), 180 $this->encriptaSenha($usuarioDTO->getStrSenha()),
155 ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaSistema'), 181 ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaSistema'),
156 - ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaOrgaoSistema') 182 + $siglaOrgao
157 ); 183 );
158 184
159 if(!$ret){ 185 if(!$ret){
@@ -241,6 +267,7 @@ class MdWsSeiUsuarioRN extends InfraRN { @@ -241,6 +267,7 @@ class MdWsSeiUsuarioRN extends InfraRN {
241 false, 267 false,
242 false 268 false
243 ); 269 );
  270 + var_dump($ret);exit;
244 return MdWsSeiRest::formataRetornoSucessoREST(null, $ret); 271 return MdWsSeiRest::formataRetornoSucessoREST(null, $ret);
245 }catch (Exception $e){ 272 }catch (Exception $e){
246 return MdWsSeiRest::formataRetornoErroREST($e); 273 return MdWsSeiRest::formataRetornoErroREST($e);