C. srv / login.php

1<?php
2
3require_once __DIR__ . "/../lib/php/BAD_REQUEST.php";
4require_once __DIR__ . "/../lib/php/ejecutaServicio.php";
5require_once __DIR__ . "/../lib/php/recuperaTexto.php";
6require_once __DIR__ . "/../lib/php/validaCue.php";
7require_once __DIR__ . "/../lib/php/ProblemDetails.php";
8require_once __DIR__ . "/../lib/php/selectFirst.php";
9require_once __DIR__ . "/../lib/php/fetchAll.php";
10require_once __DIR__ . "/../lib/php/devuelveJson.php";
11require_once __DIR__ . "/CUE.php";
12require_once __DIR__ . "/ROL_IDS.php";
13require_once __DIR__ . "/Bd.php";
14require_once __DIR__ . "/TABLA_USUARIO.php";
15require_once __DIR__ . "/protege.php";
16require_once __DIR__ . "/rolIdsParaUsuId.php";
17
18ejecutaServicio(function () {
19
20 $sesion = protege();
21
22 if ($sesion->cue !== "")
23 throw new ProblemDetails(
24 status: NO_AUTORIZADO,
25 type: "/error/sesioniniciada.html",
26 title: "Sesión iniciada.",
27 detail: "La sesión ya está iniciada.",
28 );
29
30 $cue = recuperaTexto("cue");
31 $match = recuperaTexto("match");
32
33 $cue = validaCue($cue);
34
35 if ($match === false)
36 throw new ProblemDetails(
37 status: BAD_REQUEST,
38 title: "Falta el match.",
39 type: "/error/faltamatch.html",
40 detail: "La solicitud no tiene el valor de match.",
41 );
42
43 if ($match === "")
44 throw new ProblemDetails(
45 status: BAD_REQUEST,
46 title: "Match en blanco.",
47 type: "/error/matchenblanco.html",
48 detail: "Pon texto en el campo match.",
49 );
50
51 $pdo = Bd::pdo();
52
53 $usuario =
54 selectFirst(pdo: $pdo, from: USUARIO, where: [USU_CUE => $cue]);
55
56 if ($usuario === false || !password_verify($match, $usuario[USU_MATCH]))
57 throw new ProblemDetails(
58 status: BAD_REQUEST,
59 type: "/error/datosincorrectos.html",
60 title: "Datos incorrectos.",
61 detail: "El cue y/o el match proporcionados son incorrectos.",
62 );
63
64 $_SESSION[CUE] = $cue;
65 $_SESSION[USU_ID] = $usuario[USU_ID];
66
67 devuelveJson([
68 CUE => $cue,
69 ROL_IDS => rolIdsParaUsuId($usuario[USU_ID])
70 ]);
71});
72
skip_previous skip_next