Skip to content

Commit 31f9ba4

Browse files
committed
Exclui token no logout e altera nome padrao do cookie
1 parent 8dc1df5 commit 31f9ba4

File tree

3 files changed

+70
-17
lines changed

3 files changed

+70
-17
lines changed

classes/GDE/Usuario.inc.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -653,8 +653,8 @@ public static function getFoto_Padrao($th = false, $url = false) {
653653
*
654654
* Define a senha do Usuario, possivelmente codificando-a
655655
*
656-
* @param $senha A nova senha
657-
* @param $codificar (Opcional) Se for true, a senha sera codificada
656+
* @param string $senha A nova senha
657+
* @param bool $codificar (Opcional) Se for true, a senha sera codificada
658658
* @return string A nova senha
659659
*/
660660
public function setSenha($senha, $codificar = true) {
@@ -753,18 +753,18 @@ public static function Ping($verificar = true, $atualizar_acesso = true) {
753753
*
754754
* @param string $login Login, RA ou email
755755
* @param string $senha A senha fornecida pelo usuario
756-
* @param boolean $lembrar (Opcional) Se for true, ira definir a duracao do cookie
757-
* @param false|string $erro (Opcional) Se for passado, sera preenchido com o codigo de erro
756+
* @param bool $lembrar (Opcional) Se for true, ira definir a duracao do cookie
757+
* @param bool|string $erro (Opcional) Se for passado, sera preenchido com o codigo de erro
758758
* @return Usuario
759759
*/
760760
public static function Verificar_Login($login, $senha, $lembrar = false, &$erro = false) {
761761
$Usuario = self::Por_Unique($login, null);
762762
if($Usuario === null) {
763-
$Usuario = self::Logout(null);
763+
$Usuario = self::Logout();
764764
if($erro !== false)
765765
$erro = self::ERRO_LOGIN_NAO_ENCONTRADO;
766766
} elseif($Usuario->Verificar_Senha($senha, false) === false) { // Senha incorreta
767-
$Usuario = self::Logout(null);
767+
$Usuario = self::Logout();
768768
if($erro !== false)
769769
$erro = self::ERRO_LOGIN_SENHA_INCORRETA;
770770
} elseif($Usuario->getAtivo() === false) { // Usuario inativo
@@ -807,7 +807,7 @@ public static function Efetuar_Login_DAC($token, $verificar_horario = true, &$er
807807
}
808808
list($resultado, $matricula, $tipo) = DAC::Validar_Token($token, $verificar_horario);
809809
if($resultado === false) {
810-
$Usuario = self::Logout(null);
810+
$Usuario = self::Logout();
811811
if($erro !== false)
812812
$erro = self::ERRO_LOGIN_TOKEN_INVALIDO;
813813
} else {
@@ -881,6 +881,8 @@ public function Salvar_Cookie($lembrar = false) {
881881
* @return Usuario Um objeto Usuario vazio
882882
*/
883883
public static function Logout() {
884+
if(!empty($_COOKIE[CONFIG_COOKIE_NOME]))
885+
UsuarioToken::Excluir(trim($_COOKIE[CONFIG_COOKIE_NOME]));
884886
setcookie(CONFIG_COOKIE_NOME, '', time() - 3600, self::Cookie_Path(), '', false, true);
885887
return new self();
886888
}

classes/GDE/UsuarioToken.inc.php

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,25 @@ public static function Novo(Usuario $Usuario, $salvar = true) {
7878
return $Novo;
7979
}
8080

81+
/**
82+
* Dados
83+
*
84+
* Extrai os dados da strng
85+
*
86+
* @param string $string
87+
* @return array|false
88+
*/
89+
private static function Dados($string) {
90+
$dados = explode(self::SEPARADOR, $string);
91+
if(count($dados) != 3)
92+
return false;
93+
return array(
94+
'id_token' => $dados[0],
95+
'id_usuario' => $dados[1],
96+
'token' => $dados[2]
97+
);
98+
}
99+
81100
/**
82101
* Verificar
83102
*
@@ -88,20 +107,52 @@ public static function Novo(Usuario $Usuario, $salvar = true) {
88107
* @return false|Usuario
89108
*/
90109
public static function Verificar($string) {
91-
$dados = explode(self::SEPARADOR, $string);
92-
if(count($dados) != 3)
110+
$dados = self::Dados($string);
111+
if($dados === false)
93112
return false;
94-
$Token = self::Load($dados[0]);
95-
if(
96-
($Token->getID() == null) || // Token nao encontrado
97-
($Token->getUsuario(false) === null) || // Usuario vazio!?
98-
($Token->getUsuario()->getID() != $dados[1]) || // ID de usuario nao confere
99-
($Token->getToken(false) != $dados[2]) // Token nao confere
100-
)
113+
$Token = self::Load($dados['id_token']);
114+
if($Token->Conferir_Dados($dados['id_usuario'], $dados['token']) === false)
101115
return false;
102116
return $Token->getUsuario();
103117
}
104118

119+
/**
120+
* Excluir
121+
*
122+
* Exclui o token pelos dados do cookie
123+
*
124+
* @param string $string Dados do cookie
125+
* @param bool $flush
126+
* @return bool
127+
*/
128+
public static function Excluir($string, $flush = true) {
129+
$dados = self::Dados($string);
130+
if($dados === false)
131+
return true;
132+
$Token = self::Load($dados['id_token']);
133+
if($Token->Conferir_Dados($dados['id_usuario'], $dados['token']) === false)
134+
return false;
135+
return $Token->Delete($flush);
136+
}
137+
138+
/**
139+
* Conferir_Dados
140+
*
141+
* Confere se os dados fornecidos sao iguais aos deste Token
142+
*
143+
* @param integer $id_usuario
144+
* @param string $token
145+
* @return bool
146+
*/
147+
private function Conferir_Dados($id_usuario, $token) {
148+
return (
149+
($this->getID() != null) && // Token nao encontrado
150+
($this->getUsuario(false) !== null) && // Usuario vazio!?
151+
($this->getUsuario()->getID() == $id_usuario) || // ID de usuario nao confere
152+
($this->getToken(false) == $token) // Token nao confere
153+
);
154+
}
155+
105156
/**
106157
* Em_String
107158
*

common/config-sample.inc.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
define('CONFIG_SALT_SENHA_ANTIGA', '');
3333

3434
// Nome do cookie de login
35-
define('CONFIG_COOKIE_NOME', 'GDE');
35+
define('CONFIG_COOKIE_NOME', 'gde_token');
3636

3737
// Tempo em dias para o cookie expirar quando "Lembrar" for selecionado
3838
define('CONFIG_COOKIE_DIAS', 30);

0 commit comments

Comments
 (0)