1: <?php
2: /*
3: * SimpleID
4: *
5: * Copyright (C) Kelvin Mo 2024-2025
6: *
7: * This program is free software; you can redistribute it and/or
8: * modify it under the terms of the GNU General Public
9: * License as published by the Free Software Foundation; either
10: * version 2 of the License, or (at your option) any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * General Public License for more details.
16: *
17: * You should have received a copy of the GNU General Public
18: * License along with this program; if not, write to the Free
19: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20: *
21: */
22:
23: namespace SimpleID\Auth;
24:
25: use SimpleID\Models\User;
26:
27: /**
28: * A utility trait providing base functionality to implement
29: * {@link AuthResultInterface}
30: *
31: */
32: trait AuthResultTrait {
33: /** @var User|null */
34: protected $user = null;
35:
36: /** @var int */
37: protected $auth_level = AuthManager::AUTH_LEVEL_SESSION;
38:
39: /** @var array<string> */
40: protected $auth_module_names = [];
41:
42: /** @var array<string|int> */
43: protected $acr = [];
44:
45: /**
46: * Returns the authenticated user
47: *
48: * @return User the user
49: */
50: public function getUser(): ?User {
51: return $this->user;
52: }
53:
54: /**
55: * Returns the level of authentication achieved in this
56: * session
57: *
58: * @see AuthResultInterface::getAuthLevel()
59: */
60: public function getAuthLevel(): int {
61: return $this->auth_level;
62: }
63:
64: /**
65: * Returns the authentication context class references in relation
66: * to the current authentication session.
67: *
68: * @see AuthResultInterface::getACR()
69: */
70: public function getACR(): array {
71: return $this->acr;
72: }
73:
74: /**
75: * Returns the name of the modules that authenticated user.
76: *
77: * @return array<string> the name of the modules
78: */
79: public function getAuthModuleNames(): array {
80: return array_unique($this->auth_module_names);
81: }
82: }
83: