E. php / protege.php

1
<?php
2
3
require_once __DIR__ . "/lib/NO_AUTORIZADO.php";
4
require_once __DIR__ . "/lib/ProblemDetailsException.php";
5
require_once __DIR__ . "/lib/rolIdsParaUsuId.php";
6
require_once __DIR__ . "/SAN.php";
7
require_once __DIR__ . "/USU_ID.php";
8
require_once __DIR__ . "/Bd.php";
9
10
function protege(array $rolIdsPermitidos)
11
{
12
13
 session_start();
14
15
 $san = isset($_SESSION[SAN]) ? $_SESSION[SAN] : "";
16
 $usuId = isset($_SESSION[USU_ID]) ? $_SESSION[USU_ID] : -1;
17
 $rolIds = rolIdsParaUsuId(Bd::pdo(), $usuId);
18
19
 if (count($rolIdsPermitidos) === 0) {
20
21
  return [$san, $rolIds, $usuId];
22
 } else {
23
24
  if ($san === "")  throw creaNoAutorizado();
25
26
  foreach ($rolIdsPermitidos as $rolId) {
27
   if (array_search($rolId, $rolIds, true) !== false) {
28
    return [$san, $rolIds, $usuId];
29
   }
30
  }
31
32
  throw creaNoAutorizado();
33
 }
34
}
35
36
function creaNoAutorizado()
37
{
38
 return new ProblemDetailsException([
39
  "status" => NO_AUTORIZADO,
40
  "type" => "/errors/noautorizado.html",
41
  "title" => "No autorizado.",
42
  "detail" => "No estás autorizado para usar este recurso.",
43
 ]);
44
}
45
skip_previous skip_next