B. js / protege.js

1import { consumeJson } from "../lib/js/consumeJson.js"
2import { exportaAHtml } from "../lib/js/exportaAHtml.js"
3import { Sesion } from "./Sesion.js"
4
5/**
6 * @param {string} servicio
7 * @param {string[]} [rolIdsPermitidos]
8 * @param {string} [urlDeProtección]
9 */
10export async function protege(servicio, rolIdsPermitidos, urlDeProtección) {
11 const respuesta = await consumeJson(servicio)
12 const sesion = new Sesion(respuesta.body)
13 if (rolIdsPermitidos === undefined) {
14 return sesion
15 } else {
16 const rolIds = sesion.rolIds
17 for (const rolId of rolIdsPermitidos) {
18 if (rolIds.has(rolId)) {
19 return sesion
20 }
21 }
22 if (urlDeProtección !== undefined) {
23 location.href = urlDeProtección
24 }
25 throw new Error("No autorizado.")
26 }
27}
28
29exportaAHtml(protege)
skip_previous skip_next