E. srv / protege.php

1<?php
2
3require_once __DIR__ . "/../lib/php/ProblemDetails.php";
4require_once __DIR__ . "/CUE.php";
5require_once __DIR__ . "/ROL_IDS.php";
6require_once __DIR__ . "/ROL_ID_CLIENTE.php";
7require_once __DIR__ . "/Sesion.php";
8
9const NO_AUTORIZADO = 401;
10
11function protege(?array $rolIdsPermitidos = null)
12{
13
14 session_start();
15
16 $cue = isset($_SESSION[CUE]) ? $_SESSION[CUE] : "";
17 $rolIds = isset($_SESSION[ROL_IDS]) ? $_SESSION[ROL_IDS] : [];
18 $sesion = new Sesion($cue, $rolIds);
19
20 if ($rolIdsPermitidos === null) {
21
22 return $sesion;
23 } else {
24
25 foreach ($rolIdsPermitidos as $rolId) {
26 if (array_search($rolId, $rolIds, true) !== false) {
27 return $sesion;
28 }
29 }
30
31 throw new ProblemDetails(
32 status: NO_AUTORIZADO,
33 type: "/error/noautorizado.html",
34 title: "No autorizado.",
35 detail: "No está autorizado para usar este recurso.",
36 );
37 }
38}
39
skip_previous skip_next