1: <?php
2: /**
3: * This code is licensed under AGPLv3 license or Afterlogic Software License
4: * if commercial version of the product was purchased.
5: * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
6: */
7:
8: namespace Aurora\Modules\StandardRegisterFormWebclient;
9:
10: /**
11: * Displays standard register form with ability to specify user name, account login and password.
12: *
13: * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
14: * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
15: * @copyright Copyright (c) 2023, Afterlogic Corp.
16: *
17: * @property Settings $oModuleSettings
18: *
19: * @package Modules
20: */
21: class Module extends \Aurora\System\Module\AbstractWebclientModule
22: {
23: /***** public functions might be called with web API *****/
24:
25: /**
26: * @return Module
27: */
28: public static function getInstance()
29: {
30: return parent::getInstance();
31: }
32:
33: /**
34: * @return Module
35: */
36: public static function Decorator()
37: {
38: return parent::Decorator();
39: }
40:
41: /**
42: * @return Settings
43: */
44: public function getModuleSettings()
45: {
46: return $this->oModuleSettings;
47: }
48:
49: /**
50: * Obtains list of module settings for authenticated user.
51: *
52: * @return array
53: */
54: public function GetSettings()
55: {
56: \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::Anonymous);
57:
58: return array(
59: 'ServerModuleName' => $this->oModuleSettings->ServerModuleName,
60: 'HashModuleName' => $this->oModuleSettings->HashModuleName,
61: 'CustomLogoUrl' => $this->oModuleSettings->CustomLogoUrl,
62: 'InfoText' => $this->oModuleSettings->InfoText,
63: 'BottomInfoHtmlText' => $this->oModuleSettings->BottomInfoHtmlText,
64: );
65: }
66:
67: /**
68: * Broadcasts Register event to other modules to log in the system with specified parameters.
69: *
70: * @param string $Login Login for authentication.
71: * @param string $Password Password for authentication.
72: * @param int $UserId Identifier of user which will contain new account.
73: * @return array
74: * @throws \Aurora\System\Exceptions\ApiException
75: */
76: public function Register($Login, $Password, $UserId)
77: {
78: \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::Anonymous);
79:
80: if (\Aurora\System\Api::getAuthenticatedUserId()) {
81: return false;
82: }
83:
84: if (empty($UserId)) {
85: $bPrevState = \Aurora\System\Api::skipCheckUserRole(true);
86:
87: $UserId = \Aurora\Modules\Core\Module::Decorator()->CreateUser(0, $Login);
88:
89: \Aurora\System\Api::skipCheckUserRole($bPrevState);
90: }
91:
92: if (empty($UserId)) {
93: throw new \Aurora\System\Exceptions\ApiException(\Aurora\System\Notifications::InvalidInputParameter);
94: }
95:
96: $mResult = false;
97:
98: $refArgs = array(
99: 'Login' => $Login,
100: 'Password' => $Password,
101: 'UserId' => $UserId,
102: );
103: $this->broadcastEvent(
104: 'Register',
105: $refArgs,
106: $mResult
107: );
108:
109: if (!empty($mResult)) {
110: $oLoginDecorator = \Aurora\Modules\StandardLoginFormWebclient\Module::Decorator();
111: $mResult = $oLoginDecorator->Login($Login, $Password);
112: if ($mResult && isset($mResult['AuthToken'])) {
113: \Aurora\System\Api::getAuthenticatedUserId($mResult['AuthToken']);
114: }
115: }
116:
117: return $mResult;
118: }
119: /***** public functions might be called with web API *****/
120: }
121: