main
js 73 lines 4.74 KB
Raw
1 /**
2 * MAPS Connect - Aviso de Privacidad y Términos y Condiciones
3 * Renderiza un modal reutilizable con el contenido legal. Se abre con
4 * AvisoPrivacidad.mostrar(). Se usa en login, registro y ajustes.
5 */
6 const AvisoPrivacidad = {
7 mostrar(titulo = 'Aviso de Privacidad') {
8 let root = document.getElementById('aviso-privacidad-root');
9 if (!root) {
10 root = document.createElement('div');
11 root.id = 'aviso-privacidad-root';
12 document.body.appendChild(root);
13 }
14
15 root.innerHTML = `
16 <div class="aviso-modal-overlay" id="aviso-modal-overlay">
17 <div class="aviso-modal" role="dialog" aria-modal="true" aria-label="${titulo}">
18 <div class="aviso-modal-head">
19 <h3>${titulo}</h3>
20 <button type="button" class="aviso-modal-cerrar" aria-label="Cerrar">&times;</button>
21 </div>
22 <div class="aviso-modal-body">
23 <h4>1. Responsable</h4>
24 <p>MAPS Connect, comunidad académica del Tecnológico de Monterrey / Universidad Tecmilenio ("la Plataforma"), es responsable del tratamiento de los datos personales que nos proporcionas, conforme a la Ley Federal de Protección de Datos Personales en Posesión de los Particulares (México).</p>
25
26 <h4>2. Datos que recabamos</h4>
27 <p>Nombre(s), apellidos, matrícula o nómina, correo institucional, fotografía de perfil, semestre, carrera/campus, y la información que generes al usar la Plataforma (publicaciones, mensajes, círculos de estudio, asesorías y preferencias de la aplicación como el modo oscuro).</p>
28
29 <h4>3. Finalidades del tratamiento</h4>
30 <p>Los datos se utilizan para: (a) crear y administrar tu cuenta; (b) permitir la interacción entre la comunidad (foro, mensajes, círculos y asesorías); (c) mostrar tu perfil y reputación; (d) notificarte de eventos relevantes; y (e) mejorar el funcionamiento de la Plataforma.</p>
31
32 <h4>4. Transferencia de datos</h4>
33 <p>Tus datos no se transfieren a terceros ajenos a la Plataforma, salvo que la ley lo exija o que nos otorgues tu consentimiento expreso.</p>
34
35 <h4>5. Derechos ARCO</h4>
36 <p>Puedes ejercer tus derechos de Acceso, Rectificación, Cancelación y Oposición (ARCO) contactando al administrador a través de los medios institucionales o escribiendo a la cuenta de soporte de la Plataforma.</p>
37
38 <h4>6. Seguridad</h4>
39 <p>Implementamos medidas técnicas, administrativas y físicas para proteger tus datos personales contra daño, pérdida, alteración, destrucción, uso, acceso o tratamiento no autorizado.</p>
40
41 <h4>7. Conservación</h4>
42 <p>Tus datos se conservarán mientras tu cuenta esté activa o mientras se requiera para fines legales y de auditoría. Al dar de baja tu cuenta, los datos se eliminarán o se conservarán de forma anonimizada según lo dispuesto por la ley.</p>
43
44 <h4>8. Cambios al aviso</h4>
45 <p>Este aviso puede actualizarse. La versión vigente estará siempre disponible en esta página.</p>
46
47 <hr>
48
49 <h4>Términos y Condiciones</h4>
50 <p>Al crear tu cuenta aceptas utilizar la Plataforma exclusivamente con fines académicos y de convivencia universitaria, respetar a los demás miembros de la comunidad, no difundir contenido ofensivo o ajeno a la institución, y mantener la confidencialidad de tu contraseña. El mal uso de la Plataforma puede resultar en la suspensión o baja de tu cuenta.</p>
51 </div>
52 <div class="aviso-modal-foot">
53 <button type="button" class="btn btn-primary" id="aviso-modal-aceptar">Aceptar</button>
54 </div>
55 </div>
56 </div>
57 `;
58
59 const cerrar = () => root.innerHTML = '';
60 root.querySelector('.aviso-modal-cerrar')?.addEventListener('click', cerrar);
61 root.querySelector('#aviso-modal-aceptar')?.addEventListener('click', cerrar);
62 root.querySelector('#aviso-modal-overlay')?.addEventListener('click', e => {
63 if (e.target.id === 'aviso-modal-overlay') cerrar();
64 });
65 },
66
67 /** Abre el aviso y marca el checkbox de aceptación al confirmar. */
68 desdeCheckbox(checkboxId) {
69 this.mostrar();
70 const cb = document.getElementById(checkboxId);
71 if (cb) document.getElementById('aviso-modal-aceptar')?.addEventListener('click', () => { cb.checked = true; });
72 }
73 };