Commit 53f69354d8e2877bfc546c16a11ef67741d79e9f
1 parent
052781e7
Exists in
master
and in
1 other branch
[FEAT] Alterando toda parte de autenticação e token para implementação de contextos.
Incluido serviços de listagem de orgãos e contextos.
Showing
4 changed files
with
125 additions
and
33 deletions
Show diff stats
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 | /** | ... | ... |
| ... | ... | @@ -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); | ... | ... |