Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
94.74% |
18 / 19 |
|
85.71% |
6 / 7 |
CRAP | |
0.00% |
0 / 1 |
| SessionService | |
94.74% |
18 / 19 |
|
85.71% |
6 / 7 |
9.01 | |
0.00% |
0 / 1 |
| __construct | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| grantSession | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
| grantAccess | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
| releaseSession | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| checkSession | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 | |||
| checkAccess | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 | |||
| touchSession | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
| 1 | <?php |
| 2 | |
| 3 | declare(strict_types=1); |
| 4 | |
| 5 | namespace UppServices; |
| 6 | |
| 7 | /** |
| 8 | * Session management: grant, release, check (user and guest/qrcode). |
| 9 | * Delegates to App/Services/legacy/session/session.php. |
| 10 | */ |
| 11 | class SessionService |
| 12 | { |
| 13 | private const SESSION_LEGACY_PATH = __DIR__.'/legacy/session/session.php'; |
| 14 | |
| 15 | public function __construct() |
| 16 | { |
| 17 | require_once self::SESSION_LEGACY_PATH; |
| 18 | } |
| 19 | |
| 20 | /** |
| 21 | * Grant a session for a logged-in user (reuse released or create new). |
| 22 | * |
| 23 | * Uses central DB (SESSION table); connection resolved inside legacy grant_session. |
| 24 | * |
| 25 | * @param \ConxHelper $conx Connection helper. |
| 26 | * @param string $deviceid Device identifier. |
| 27 | * @param string $userid User identifier. |
| 28 | * @param string|null $sessionid Output: granted session id. |
| 29 | * @return int ApplicationError code. |
| 30 | */ |
| 31 | public function grantSession(\ConxHelper $conx, string $deviceid, string $userid, ?string &$sessionid): int |
| 32 | { |
| 33 | $sessionid = null; |
| 34 | return \grant_session($conx, $deviceid, $userid, $sessionid); |
| 35 | } |
| 36 | |
| 37 | /** |
| 38 | * Grant access for a guest (qrcode); reuse or create session. |
| 39 | * |
| 40 | * @param \ConxHelper $conx Connection helper (uses ->global for central DB). |
| 41 | * @param string $deviceid Device identifier. |
| 42 | * @param string $qrscanid QRSCAN objid (mesa/table scan entry). |
| 43 | * @param string|null $sessionid Output: granted session id. |
| 44 | * @return int ApplicationError code. |
| 45 | */ |
| 46 | public function grantAccess(\ConxHelper $conx, string $deviceid, string $qrscanid, ?string &$sessionid): int |
| 47 | { |
| 48 | $sessionid = null; |
| 49 | return \grant_access($conx, $deviceid, $qrscanid, $sessionid); |
| 50 | } |
| 51 | |
| 52 | /** |
| 53 | * Release an active session (e.g. logout). |
| 54 | * |
| 55 | * @param \conx $conx Legacy db connection. |
| 56 | * @param string $sessionid Session id to release. |
| 57 | * @return int ApplicationError code. |
| 58 | */ |
| 59 | public function releaseSession(\conx $conx, string $sessionid): int |
| 60 | { |
| 61 | return \release_session($conx, $sessionid); |
| 62 | } |
| 63 | |
| 64 | /** |
| 65 | * Check session for a user; updates touch time on success. |
| 66 | * |
| 67 | * @param \ConxHelper $conx Connection helper (uses ->global for central DB). |
| 68 | * @param string $sessionid Session id. |
| 69 | * @param string $deviceid Device identifier. |
| 70 | * @param string|null $userid Output: user id if valid. |
| 71 | * @param mixed|null $session Optional output: session objid (pass variable by reference to receive it). |
| 72 | * @return int ApplicationError code. |
| 73 | */ |
| 74 | public function checkSession(\ConxHelper $conx, string $sessionid, string $deviceid, ?string &$userid, mixed &$session = null): int |
| 75 | { |
| 76 | $userid = null; |
| 77 | $sessionOut = false; |
| 78 | $ret = \check_session($conx, $sessionid, $deviceid, $userid, $sessionOut); |
| 79 | if (func_num_args() >= 5) { |
| 80 | $session = $sessionOut; |
| 81 | } |
| 82 | return $ret; |
| 83 | } |
| 84 | |
| 85 | /** |
| 86 | * Check access for a guest session (qrcode); updates touch time on success. |
| 87 | * |
| 88 | * @param \ConxHelper $conx Connection helper (uses ->global for central DB). |
| 89 | * @param string $sessionid Session id. |
| 90 | * @param string $deviceid Device identifier. |
| 91 | * @param string|null $qrscanid Output: QRSCAN objid if valid. |
| 92 | * @param mixed|null $session Optional output: session objid (pass variable by reference to receive it). |
| 93 | * @return int ApplicationError code. |
| 94 | */ |
| 95 | public function checkAccess(\ConxHelper $conx, string $sessionid, string $deviceid, ?string &$qrscanid, mixed &$session = null): int |
| 96 | { |
| 97 | $qrscanid = null; |
| 98 | $sessionOut = false; |
| 99 | $ret = \check_access($conx, $sessionid, $deviceid, $qrscanid, $sessionOut); |
| 100 | if (func_num_args() >= 5) { |
| 101 | $session = $sessionOut; |
| 102 | } |
| 103 | return $ret; |
| 104 | } |
| 105 | |
| 106 | /** |
| 107 | * Update session touch time (activity). |
| 108 | * |
| 109 | * @param \ConxHelper $conx Connection helper (uses ->global for central DB). |
| 110 | * @param array<string, mixed> $session Session row (must contain 'objid'). |
| 111 | * @return int ApplicationError code. |
| 112 | */ |
| 113 | public function touchSession(\ConxHelper $conx, array $session): int |
| 114 | { |
| 115 | return \touch_session($conx, $session); |
| 116 | } |
| 117 | } |