%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/intranet.tjamich.gob.mx/intranet/
Upload File :
Create Path :
Current File : /home/tjamichg/intranet.tjamich.gob.mx/intranet/modalCredenciales.php

<?php
$sql1 = "SELECT e.nombre, e.apellido1, e.apellido2, e.correo, e.correo_alt

            FROM tjam_empleados e

            WHERE e.id = $id_usuario";

$data_usuario = $conf->consulta($sql1);

$correo = "";
if (isset($data_usuario["0"]["correo"]) && $data_usuario["0"]["correo"] != "") {
	$correo = $data_usuario["0"]["correo"];
} else if (isset($data_usuario["0"]["correo_alt"]) && $data_usuario["0"]["correo_alt"] != "") {
	$correo = $data_usuario["0"]["correo_alt"];
} else {
	echo json_encode(array('success' => -1));
	die();
}

?>
<div id="modal_credenciales" tabindex="-1" role="dialog" aria-labelledby="modal-stackable-label" aria-hidden="false"
	class="modal fade">
	<div class="modal-dialog modal-wide-width">
		<div class="modal-content">
			<div class="modal-body"><br>

				<div class="panel panel-green">
					<div class="panel-body">
						<h5>
							<dt>Por actualización en el Sistema Informático del Tribunal, reemplazaremos tu firma
								electrónica certificada, por lo que a partir del día 22 de diciembre de 2025, deberás
								descargar los nuevos archivos, .Cer y .Key de tu nueva firma electrónica, para que
								puedas seguir gestionando tus juicios en línea ante este Tribunal en materia
								Anticorrupción y Administrativa del Estado de Michoacán.<br><br>

								Nota: Los nuevos archivos de tu firma electrónica estarán disponibles de manera
								temporal, por lo que se recomienda descargarlos y resguardarlos oportunamente. En caso
								de no hacerlo, deberás acudir físicamente a las instalaciones del Tribunal en el módulo
								de Juicio en Línea para solicitar la emisión de nuevos certificados.<br><br>

								Para cualquier duda o aclaración, comunícate al (443) 316 14 59 ext. 1113.</dt>
						</h5>
						<br>

						<div class="row">
							<div class="col-md-6">
								<button type="button" id="btn_cer" class="btn btn-primary btn-block"
									onclick="descargaCertificado(1);">
									<i class="fa fa-download" aria-hidden="true"></i> Descarga certificado CER
								</button>
							</div>
							<div class="col-md-6">
								<button type="button" id="btn_key" class="btn btn-primary btn-block"
									onclick="descargaCertificado(2);">
									<i class="fa fa-download" aria-hidden="true"></i> Descarga certificado KEY
								</button>
							</div>
						</div>

						<br><br>
						<div class="form-actions text-right pal">

							<button type="button" data-dismiss="modal" class="btn btn-danger btn-block">Cerrar</button>

						</div>

					</div>
				</div>
			</div>
		</div>
	</div>
</div>


<script>
	function descargaCertificado(tipo) {
		// llamar a ajax para obtener el idFEA
		// llamar a certificados mandando el idFEA para generar el certificado

		$.ajax({
			url: "https://jel.tjamich.gob.mx/ApiJel/UsuariosJEL/getIdFeaCorreo",
			cache: false,
			type: "POST",
			dataType: "html",
			contentType: "text/html; charset=utf-8",
			data: "\"<?= $correo ?>\"",
		}).done(function (idFEA) {

			if (idFEA == -1 || idFEA == -2 || idFEA == 0) {
				alert("Error al obtener el certificado. Por favor, comuníquese con el Departamento de Informática para recibir asistencia.");
				return;
			}

			var tipoCertificado = "";
			if (tipo == 1) {// cer
				tipoCertificado = "getCertificadoCorreoCer";
			} else { // key
				tipoCertificado = "getCertificadoCorreoKey";
			}

			$.ajax({
				url: "https://jel.tjamich.gob.mx/ApiJel/UsuariosJEL/" + tipoCertificado,
				cache: false,
				type: "POST",
				dataType: "html",
				contentType: "text/html; charset=utf-8",
				data: idFEA,
			}).done(function (cerT) {

				if (cerT == '"error en la respuesta"' ) {
					alert("No fue posible completar la descarga del archivo. Por favor, comuníquese con el Departamento de Informática para recibir asistencia.");
					return;
				}
				// guarda el certificado
				if (tipo == 1) { // cer
					descargarCER(cerT);

				} else { // key
					descargarKEY(cerT);
				}


			}).fail(function (jqXHR, textStatus, errorThrown) {
				alert("No fue posible completar la descarga del archivo. Por favor, comuníquese con el Departamento de Informática para recibir asistencia.");
				console.error('AJAX error', {
					status: jqXHR.status,
					statusText: jqXHR.statusText,
					textStatus: textStatus,
					errorThrown: errorThrown
				});

				if (jqXHR.responseText) {
					console.error('ResponseText:', jqXHR.responseText);
				}

				try {
					var resp = jqXHR.responseJSON || (jqXHR.responseText && JSON.parse(jqXHR.responseText));
					if (resp) console.error('Response JSON:', resp);
				} catch (ex) {
					console.error('Failed to parse responseText as JSON:', ex);
				}

			});

		}).fail(function (jqXHR, textStatus, errorThrown) {
			alert("Error al obtener el certificado. Por favor, comuníquese con el Departamento de Informática para recibir asistencia.");
			console.error('AJAX error', {
				status: jqXHR.status,
				statusText: jqXHR.statusText,
				textStatus: textStatus,
				errorThrown: errorThrown
			});

			if (jqXHR.responseText) {
				console.error('ResponseText:', jqXHR.responseText);
			}

			try {
				var resp = jqXHR.responseJSON || (jqXHR.responseText && JSON.parse(jqXHR.responseText));
				if (resp) console.error('Response JSON:', resp);
			} catch (ex) {
				console.error('Failed to parse responseText as JSON:', ex);
			}

		});
	}
































	function descargarCER(base64) {

		// 1. Eliminar posibles headers y comillas
		/* base64 = base64
			.replace(/^data:.*;base64,/, '')
			.replace(/"/g, '')
			.replace(/\s/g, '');

		// 2. Validar base64
		if (!/^[A-Za-z0-9+/=]+$/.test(base64)) {
			console.error('Base64 inválido:', base64.substring(0, 100));
			alert('El archivo recibido no es válido.');
			return;
		} */

		base64 = base64.slice(1, -1);


		const byteCharacters = atob(base64);
		const byteNumbers = new Array(byteCharacters.length);

		for (let i = 0; i < byteCharacters.length; i++) {
			byteNumbers[i] = byteCharacters.charCodeAt(i);
		}

		const byteArray = new Uint8Array(byteNumbers);

		const blob = new Blob([byteArray], {
			type: "application/x-x509-ca-cert"
		});

		const link = document.createElement("a");
		link.href = window.URL.createObjectURL(blob);
		link.download = "<?= $correo ?>.cer";

		document.body.appendChild(link);
		link.click();
		document.body.removeChild(link);
	}




	function descargarKEY(base64) {


		// 1. Eliminar posibles headers y comillas
		/* base64 = base64
			.replace(/^data:.*;base64,/, '')
			.replace(/"/g, '')
			.replace(/\s/g, '');

		// 2. Validar base64
		if (!/^[A-Za-z0-9+/=]+$/.test(base64)) {
			console.error('Base64 inválido:', base64.substring(0, 100));
			alert('El archivo recibido no es válido.');
			return;
		} */

		base64 = base64.slice(1, -1);


		const byteCharacters = atob(base64);
		const byteNumbers = new Array(byteCharacters.length);

		for (let i = 0; i < byteCharacters.length; i++) {
			byteNumbers[i] = byteCharacters.charCodeAt(i);
		}

		const byteArray = new Uint8Array(byteNumbers);

		const blob = new Blob([byteArray], {
			type: "application/octet-stream"
		});

		const link = document.createElement("a");
		link.href = window.URL.createObjectURL(blob);
		link.download = "<?= $correo ?>.key";

		document.body.appendChild(link);
		link.click();
		document.body.removeChild(link);
	}
</script>

Zerion Mini Shell 1.0