Desconectar usuário [RESOLVIDO]

Bom dia a todos!

Estou com dificuldade no seguinte: Tenho a grid onde mostra todos os usuários logados no sistema. Nesta grid, coloquei um campo com imagem html onde através do evento ajax onClick eu queria deslogar o usuário. Mas não estou conseguindo fazer isso funcionar. Ele some da lista de usuários logados mas continua logado.

Segue o código utilizado:

sc_logged_out({login});
sc_reset_apl_status();

Acima a minha última tentativa. Já tentei várias outras coisas inclusive refiz o módulo de segurança (pois estava na versão mais antiga).

Desde já, agradeço a atenção.

Você pode por no evento onExecute do Menu para fazer a mesma checagem desta grid,
ai comparando o login da sessão do usuário atual com o status da grid se estiver off,
você executa uma mesagem que o usuário foi des-logado e redireciona para o Login.

Essa checagem caso você tiver uma outra aplicação mais ‘crítica’ de uso que o usuário
acaba ficando com a tela aberta ali, você pode por essa checagem também no evento
desta aplicação no evento OnLoad/OnRecord

1 Curtida

Bom dia! Segue abaixo um pequeno tutorial do que fiz para resolver minha demanda. O que precisava era o seguinte:

Na grid de usuários logados (gerada pelo módulo de segurança do scriptcase), criar um campo com evento ajax onClick e ao clicar nele, deslogar um determinado usuário. O usuário estando em outra tela, deveria ser redirecionado automaticamente para a tela de login.

Pra isso fiz:

Grid de usuários:

Criei um campo tipo texto chamado logout. No evento onRecord, coloquei um icone pra esse campo:

{logout} = '<i class="icon_fa fas fa-sign-out-alt"></i>';

No evento ajax onClick:

sc_logged_out({login});
sc_redir(minhaGrid);

Menu:

P.S.: Meu menu é feito baseado no tema AdminLTE. Então é feito em blank. Não testei em menu gerado pelo scriptcase mas acredito que dê na mesma.

No evento onExecute, coloquei o seguinte código:

<script>
$(document).ready(function(){

	function getDatabaseMessage(){

		var data = JSON.stringify({
			"sessao": '<?php echo session_id();?>'
		});

		var xhr = new XMLHttpRequest();
		xhr.withCredentials = true;

		xhr.addEventListener("readystatechange", function () {
			if (this.readyState === 4) {

				var text = JSON.parse(this.responseText);

				if(text.retorno == 'error'){

					parent.window.location = "../seulogin/seulogin.php";//aqui estou redirecionando para minha tela de login

					let timerInterval
					Swal.fire({
						title: 'Usuário desconectado!',
						html: 'Seu usuário foi desconectado pelo administrador do sistema.',
						timer: 100000,
						onBeforeOpen: () => {
							Swal.showLoading()
							timerInterval = setInterval(() => {
								Swal.getContent().querySelector('strong')
									.textContent = Swal.getTimerLeft()
							}, 10000)
						},
						onClose: () => {
							clearInterval(timerInterval);
							
							parent.window.location = "../seulogin/seulogin.php";//aqui estou redirecionando para minha tela de login
						}
					}).then((result) => {
						if (
							result.dismiss === Swal.DismissReason.timer
						) {

						}
					})

				}

			}
		});

		// var str = pathname;
		var res = "../suapaginablankdechecagem/index.php";//str.replace('Mmaster', 'ws-autentication');

		xhr.open("POST", res);
		xhr.setRequestHeader("User", "session");
		xhr.setRequestHeader("Token", "XXXXXXX");
		xhr.setRequestHeader("Content-Type", "application/json");
		xhr.setRequestHeader("Cache-Control", "no-cache");
		xhr.send(data);
		/////////////////////////////////
	}
	getDatabaseMessage();

	setInterval(getDatabaseMessage, 1000);

});
</script>

Blank de checagem:

header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');
$header    = getallheaders();
$validAuth = false;
$data      = "";
$method    = $_SERVER['REQUEST_METHOD'];

if ($method != "POST"){
	echo json_encode(array('retorno' => 'Method Not Allowed'));	
}

if (isset($header["User"]) &&  isset($header["Token"])){
	$user     = $header["User"];
	$password = $header["Token"];

	if (($user == "session") && ($password == "XXXXXXX")) {
		$validAuth = true;	
	}else{
		echo json_encode(array('retorno' => 'Unauthorized'));	
	}
}else{
	echo json_encode(array('retorno' => 'Bad Request'));
}

if ($validAuth == true){
	$data = json_decode(file_get_contents("php://input") );
	if (json_last_error() != 0) {
		echo json_encode(array('retorno' => 'Syntax error, malformed JSON.'));
		return;
	}

	if($user == 'session'){
		$retorno = mVerificaUsuario($data->sessao);

		echo json_encode(array('retorno' => $retorno));
		return;				
	}
}

// MÉTODO mVerificaUSuario($sessao)

$sql = "SELECT COUNT(*) FROM tb_seguranca_logged WHERE sc_session = '".$sessao."'";
sc_lookup(rs, $sql);

if ({rs[0][0]} == 0){
	return 'error';
}else{
	return 'ok';
}
2 Curtidas

Muito bom @thyagohenrique85 parabéns.
Obrigado por compartilhar.

2 Curtidas