B. js / protege.js

1import { consumeJson } from "../lib/js/consumeJson.js"
2import { exportaAHtml } from "../lib/js/exportaAHtml.js"
3import { muestraError } from "../lib/js/muestraError.js"
4import { MiNav } from "./custom/mi-nav.js"
5import { Sesion } from "./Sesion.js"
6
7const SERVICIO = 'srv/sesion-actual.php'
8const URL_DE_PROTECCION = 'index.html'
9
10/**
11 * @param {MiNav} [nav]
12 * @param {string[]} [rolIdsPermitidos]
13 */
14export async function protege(nav, rolIdsPermitidos) {
15 try {
16
17 const respuesta = await consumeJson(SERVICIO)
18 const sesion = new Sesion(respuesta.body)
19
20 if (nav) {
21 nav.sesion = sesion
22 }
23
24 if (rolIdsPermitidos === undefined) {
25
26 return sesion
27
28 } else {
29
30 const rolIds = sesion.rolIds
31
32 for (const rolId of rolIdsPermitidos) {
33 if (rolIds.has(rolId)) {
34 return sesion
35 }
36 }
37
38 if (location.href !== URL_DE_PROTECCION) {
39 location.href = URL_DE_PROTECCION
40 }
41
42 throw new Error("No autorizado.")
43
44 }
45
46 } catch (error) {
47 muestraError(error)
48 }
49}
50
51exportaAHtml(protege)
skip_previous skip_next