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