Commit 53f69354d8e2877bfc546c16a11ef67741d79e9f

Authored by eduardo.batista
1 parent 052781e7
Exists in master and in 1 other branch desenv

[FEAT] Alterando toda parte de autenticação e token para implementação de contextos.

Incluido serviços de listagem de orgãos e contextos.
controlador_ws.php
... ... @@ -51,10 +51,36 @@ $app->group('/api/v1',function(){
51 51 /** @var $response Slim\Http\Response */
52 52 $rn = new MdWsSeiUsuarioRN();
53 53 $usuarioDTO = new UsuarioDTO();
  54 + $contextoDTO = new ContextoDTO();
54 55 $usuarioDTO->setStrSigla($request->getParam('usuario'));
55 56 $usuarioDTO->setStrSenha($request->getParam('senha'));
  57 + $contextoDTO->setNumIdContexto($request->getParam('contexto'));
  58 + $contextoDTO->setNumIdOrgao($request->getParam('orgao'));
56 59  
57   - return $response->withJSON($rn->autenticar($usuarioDTO));
  60 + return $response->withJSON($rn->apiAutenticar($usuarioDTO, $contextoDTO));
  61 + });
  62 + /**
  63 + * Grupo de controlador de Órgão <publico>
  64 + */
  65 + $this->group('/orgao', function(){
  66 + $this->get('/listar', function($request, $response, $args){
  67 + /** @var $request Slim\Http\Request */
  68 + $rn = new MdWsSeiOrgaoRN();
  69 + $dto = new OrgaoDTO();
  70 + return $response->withJSON($rn->listarOrgao($dto));
  71 + });
  72 + });
  73 + /**
  74 + * Grupo de controlador de Contexto <publico>
  75 + */
  76 + $this->group('/contexto', function(){
  77 + $this->get('/listar/{orgao}', function($request, $response, $args){
  78 + /** @var $request Slim\Http\Request */
  79 + $rn = new MdWsSeiContextoRN();
  80 + $dto = new OrgaoDTO();
  81 + $dto->setNumIdOrgao($request->getAttribute('route')->getArgument('orgao'));
  82 + return $response->withJSON($rn->listarContexto($dto));
  83 + });
58 84 });
59 85  
60 86 /**
... ...
rn/MdWsSeiContextoRN.php 0 → 100644
... ... @@ -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 46 \ No newline at end of file
... ...
rn/MdWsSeiOrgaoRN.php
... ... @@ -10,28 +10,22 @@ class MdWsSeiOrgaoRN extends InfraRN {
10 10 /**
11 11 * Retorna todos os orgaos ativos cadastrados
12 12 * @param OrgaoDTO $orgaoDTO
13   - * @info para p�ginacao e necess�rio informar dentro do DTO os parametros abaixo:
14   - * - setNumMaxRegistrosRetorno
15   - * - setNumPaginaAtual
16 13 * @return array
17 14 */
18   - protected function listarOrgaoConectado(OrgaoDTO $orgaoDTO){
  15 + protected function listarOrgaoConectado(OrgaoDTO $orgaoDTOParam){
19 16 try{
20 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 29 /** @var OrgaoDTO $orgDTO */
36 30 foreach($ret as $orgDTO){
37 31 $result[] = array(
... ... @@ -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 39 }catch (Exception $e){
46 40 return MdWsSeiRest::formataRetornoErroREST($e);
47 41 }
... ...
rn/MdWsSeiUsuarioRN.php
... ... @@ -50,7 +50,7 @@ class MdWsSeiUsuarioRN extends InfraRN {
50 50 $fase2 = str_replace($this->getSecret(), '', $fase1);
51 51 $fase3 = base64_decode($fase2);
52 52 $tokenData = explode('||', $fase3);
53   - if(count($tokenData) != 2){
  53 + if(count($tokenData) != 4){
54 54 return null;
55 55 }
56 56 $tokenData[0] = $this->decriptaSenha($tokenData[0]);
... ... @@ -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 64 * @param $sigla
65 65 * @param $senha
  66 + * @param null $orgao
  67 + * @param null $contexto
66 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 81 return $token;
72 82 }
... ... @@ -106,13 +116,15 @@ class MdWsSeiUsuarioRN extends InfraRN {
106 116  
107 117 $tokenData = $this->tokenDecode($token);
108 118 if(!$tokenData){
109   - throw new InfraException('Token inv?lido!');
  119 + throw new InfraException('Token inválido!');
110 120 }
111   -
112 121 $usuarioDTO = new UsuarioDTO();
113 122 $usuarioDTO->setStrSigla($tokenData[0]);
114 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 128 if(!$result['sucesso']){
117 129 return $result;
118 130 }
... ... @@ -131,9 +143,12 @@ class MdWsSeiUsuarioRN extends InfraRN {
131 143 * @param $senha
132 144 * @param $IdOrgao
133 145 */
134   - protected function autenticarConectado(UsuarioDTO $usuarioDTO){
  146 + public function apiAutenticar(UsuarioDTO $usuarioDTO, ContextoDTO $contextoDTO){
135 147 try{
136   - if(!$usuarioDTO->isSetNumIdOrgao()){
  148 + $contexto = $contextoDTO->getNumIdContexto();
  149 + $orgao = $contextoDTO->getNumIdOrgao();
  150 + $siglaOrgao = null;
  151 + if(!$orgao){
137 152 $orgaoRN = new OrgaoRN();
138 153 $objOrgaoDTO = new OrgaoDTO();
139 154 $objOrgaoDTO->setBolExclusaoLogica(false);
... ... @@ -144,16 +159,27 @@ class MdWsSeiUsuarioRN extends InfraRN {
144 159 * Orgao da sessao do sistema
145 160 */
146 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 175 $objSipWs = $this->retornaServicoSip();
150 176 $ret = $objSipWs->autenticarCompleto(
151   - $usuarioDTO->getNumIdOrgao(),
152   - null,
  177 + $orgao,
  178 + $contexto,
153 179 $usuarioDTO->getStrSigla(),
154 180 $this->encriptaSenha($usuarioDTO->getStrSenha()),
155 181 ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaSistema'),
156   - ConfiguracaoSEI::getInstance()->getValor('SessaoSEI', 'SiglaOrgaoSistema')
  182 + $siglaOrgao
157 183 );
158 184  
159 185 if(!$ret){
... ... @@ -241,6 +267,7 @@ class MdWsSeiUsuarioRN extends InfraRN {
241 267 false,
242 268 false
243 269 );
  270 + var_dump($ret);exit;
244 271 return MdWsSeiRest::formataRetornoSucessoREST(null, $ret);
245 272 }catch (Exception $e){
246 273 return MdWsSeiRest::formataRetornoErroREST($e);
... ...