Skip to content

Commit 120bcca

Browse files
committed
Refactoring the User class
1 parent c58816b commit 120bcca

29 files changed

+558
-487
lines changed

src/controllers/Comment/Create.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2323

2424
$model->user = Authentication::$user;
2525

26-
$model->acl_allowed = ($model->user && $model->user->getAcl(
26+
$model->acl_allowed = ($model->user && $model->user->getOption(
2727
User::OPTION_ACL_COMMENT_CREATE
2828
));
2929

src/controllers/Comment/Delete.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function &run(Router &$router, View &$view, array &$args) {
3434
catch (InvalidArgumentException $e) { $model->comment = null; }
3535

3636
$model->acl_allowed = ($model->user && (
37-
$model->user->getAcl(User::OPTION_ACL_COMMENT_DELETE) ||
37+
$model->user->getOption(User::OPTION_ACL_COMMENT_DELETE) ||
3838
$model->user->getId() == $model->comment->getUserId()
3939
));
4040

src/controllers/Comment/Edit.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function &run( Router &$router, View &$view, array &$args ) {
4040
catch ( InvalidArgumentException $e ) { $model->comment = null; }
4141

4242
$model->acl_allowed = ( $model->user && (
43-
$model->user->getAcl( User::OPTION_ACL_COMMENT_MODIFY ) ||
43+
$model->user->getOption( User::OPTION_ACL_COMMENT_MODIFY ) ||
4444
$model->user->getId() == $model->comment->getUserId()
4545
));
4646

src/controllers/Document/Create.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2121
$model->error = null;
2222
$model->user = Authentication::$user;
2323

24-
$model->acl_allowed = ($model->user && $model->user->getAcl(
24+
$model->acl_allowed = ($model->user && $model->user->getOption(
2525
User::OPTION_ACL_DOCUMENT_CREATE
2626
));
2727

src/controllers/Document/Delete.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2727
$model->title = null;
2828
$model->user = Authentication::$user;
2929

30-
$model->acl_allowed = ($model->user && $model->user->getAcl(
30+
$model->acl_allowed = ($model->user && $model->user->getOption(
3131
User::OPTION_ACL_DOCUMENT_DELETE
3232
));
3333

src/controllers/Document/Edit.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function &run(Router &$router, View &$view, array &$args) {
3434
$model->title = null;
3535
$model->user = Authentication::$user;
3636

37-
$model->acl_allowed = ($model->user && $model->user->getAcl(
37+
$model->acl_allowed = ($model->user && $model->user->getOption(
3838
User::OPTION_ACL_DOCUMENT_MODIFY
3939
));
4040

src/controllers/EventLog/Index.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2323

2424
$model->user = Authentication::$user;
2525

26-
$model->acl_allowed = ($model->user && $model->user->getAcl(
26+
$model->acl_allowed = ($model->user && $model->user->getOption(
2727
User::OPTION_ACL_EVENT_LOG_VIEW
2828
));
2929

src/controllers/EventLog/View.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function &run( Router &$router, ViewMVC &$view, array &$args ) {
1919

2020
$model->user = Authentication::$user;
2121

22-
$model->acl_allowed = ( $model->user && $model->user->getAcl(
22+
$model->acl_allowed = ( $model->user && $model->user->getOption(
2323
User::OPTION_ACL_EVENT_LOG_VIEW
2424
));
2525

src/controllers/News.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2626
$model = new NewsModel();
2727
$model->active_user = Authentication::$user;
2828

29-
$model->acl_allowed = ($model->active_user && $model->active_user->getAcl(
29+
$model->acl_allowed = ($model->active_user && $model->active_user->getOption(
3030
User::OPTION_ACL_NEWS_CREATE |
3131
User::OPTION_ACL_NEWS_MODIFY |
3232
User::OPTION_ACL_NEWS_DELETE

src/controllers/News/Create.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2424
$model->news_categories = null;
2525
$model->user = Authentication::$user;
2626

27-
$model->acl_allowed = ($model->user && $model->user->getAcl(
27+
$model->acl_allowed = ($model->user && $model->user->getOption(
2828
User::OPTION_ACL_NEWS_CREATE
2929
));
3030

src/controllers/News/Delete.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2727
$model->title = null;
2828
$model->user = Authentication::$user;
2929

30-
$model->acl_allowed = ($model->user && $model->user->getAcl(
30+
$model->acl_allowed = ($model->user && $model->user->getOption(
3131
User::OPTION_ACL_NEWS_DELETE
3232
));
3333

src/controllers/News/Edit.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function &run(Router &$router, View &$view, array &$args)
3939
$model->rss_exempt = null;
4040
$model->title = null;
4141

42-
$model->acl_allowed = ($model->active_user && $model->active_user->getAcl(
42+
$model->acl_allowed = ($model->active_user && $model->active_user->getOption(
4343
User::OPTION_ACL_NEWS_MODIFY
4444
));
4545

src/controllers/News/View.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function &run(Router &$router, ViewLib &$view, array &$args) {
2020
$model->active_user = Authentication::$user;
2121
$model->news_post_id = array_shift($args);
2222

23-
$model->acl_allowed = ($model->active_user && $model->active_user->getAcl(
23+
$model->acl_allowed = ($model->active_user && $model->active_user->getOption(
2424
User::OPTION_ACL_NEWS_CREATE |
2525
User::OPTION_ACL_NEWS_MODIFY |
2626
User::OPTION_ACL_NEWS_DELETE

src/controllers/Packet/Delete.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public function &run(Router &$router, View &$view, array &$args) {
2727
$model->title = null;
2828
$model->user = Authentication::$user;
2929

30-
$model->acl_allowed = ($model->user && $model->user->getAcl(
30+
$model->acl_allowed = ($model->user && $model->user->getOption(
3131
User::OPTION_ACL_PACKET_DELETE
3232
));
3333

src/controllers/Packet/Edit.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function &run(Router &$router, View &$view, array &$args) {
4343
$model->used_by = null;
4444
$model->user = Authentication::$user;
4545

46-
$model->acl_allowed = ($model->user && $model->user->getAcl(
46+
$model->acl_allowed = ($model->user && $model->user->getOption(
4747
User::OPTION_ACL_PACKET_MODIFY
4848
));
4949

src/controllers/User/ChangePassword.php

+6-8
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
use \BNETDocs\Libraries\Logger;
88
use \BNETDocs\Libraries\User;
99
use \BNETDocs\Models\User\ChangePassword as UserChangePasswordModel;
10-
1110
use \CarlBennett\MVC\Libraries\Common;
1211
use \CarlBennett\MVC\Libraries\Controller;
1312
use \CarlBennett\MVC\Libraries\Router;
1413
use \CarlBennett\MVC\Libraries\View;
14+
use \Exception;
1515

1616
class ChangePassword extends Controller {
1717
public function &run(Router &$router, View &$view, array &$args) {
@@ -80,19 +80,17 @@ protected function tryChangePassword(
8080
$old_password_hash = Authentication::$user->getPasswordHash();
8181
$old_password_salt = Authentication::$user->getPasswordSalt();
8282
try {
83-
$success = Authentication::$user->changePassword($pw2);
84-
} catch (QueryException $e) {
83+
Authentication::$user->setPassword($pw2);
84+
Authentication::$user->commit();
85+
$model->error = false;
86+
} catch (Exception $e) {
8587
// SQL error occurred. We can show a friendly message to the user while
8688
// also notifying this problem to staff.
8789
Logger::logException($e);
90+
$model->error = 'INTERNAL_ERROR';
8891
}
8992
$new_password_hash = Authentication::$user->getPasswordHash();
9093
$new_password_salt = Authentication::$user->getPasswordSalt();
91-
if (!$success) {
92-
$model->error = 'INTERNAL_ERROR';
93-
} else {
94-
$model->error = false;
95-
}
9694
Logger::logEvent(
9795
EventTypes::USER_PASSWORD_CHANGE,
9896
Authentication::$user->getId(),

src/controllers/User/Index.php

-12
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,6 @@ public function &run(Router &$router, View &$view, array &$args) {
6969
$model->limit * ( $model->page - 1 )
7070
);
7171

72-
/*for ($i = 101; $i <= 100000; ++$i) {
73-
$email = 'testuser' . $i . '@bnetdocs.org';
74-
$username = 'testuser' . $i;
75-
$display_name = null;
76-
$password = 'testuser';
77-
$options_bitmask = User::OPTION_DISABLED;
78-
79-
User::create(
80-
$email, $username, $display_name, $password, $options_bitmask
81-
);
82-
}*/
83-
8472
// Post-filter summary of users
8573
$model->sum_users = count($model->users);
8674

src/controllers/User/Login.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ protected function tryLogin(Router &$router, UserLoginModel &$model) {
7171

7272
// Upgrade old password (we checked it matches earlier above)
7373
if (substr($user->getPasswordHash(), 0, 1) !== '$') {
74-
$user->changePassword($password);
74+
$user->setPassword($password);
75+
$user->commit();
7576
}
7677

77-
Authentication::login( $user );
78+
Authentication::login($user);
7879

7980
Logger::logEvent(
8081
EventTypes::USER_LOGIN,

src/controllers/User/Register.php

+14-18
Original file line numberDiff line numberDiff line change
@@ -165,33 +165,29 @@ protected function tryRegister(Router &$router, UserRegisterModel &$model) {
165165
}
166166
} catch (UserNotFoundException $e) {}
167167

168-
$user = null;
169-
$user_id = null;
170-
171168
try {
172169

173-
$success = User::create(
174-
$email, $username, null, $pw1, User::DEFAULT_OPTION
175-
);
176-
177-
if ($success) {
178-
$user_id = User::findIdByUsername($username);
179-
$user = new User( $user_id );
180-
}
170+
$user = new User(null);
171+
$user->setEmail($email);
172+
$user->setPassword($pw1);
173+
$user->setUsername($username);
174+
$user->setVerified(false, true);
175+
$user->commit();
176+
$user_id = $user->getId();
177+
$model->error = false;
181178

182179
} catch (QueryException $e) {
183180

184181
// SQL error occurred. We can show a friendly message to the user while
185182
// also notifying this problem to staff.
186183
Logger::logException($e);
184+
$model->error = 'INTERNAL_ERROR';
185+
$user = null;
186+
$user_id = null;
187187

188188
}
189189

190-
if (!$success) {
191-
$model->error = 'INTERNAL_ERROR';
192-
} else {
193-
$model->error = false;
194-
190+
if ($user) {
195191
Logger::logEvent(
196192
EventTypes::USER_CREATED,
197193
$user_id,
@@ -213,8 +209,8 @@ protected function tryRegister(Router &$router, UserRegisterModel &$model) {
213209
$mail_config = Common::$config->email;
214210

215211
$state->mail = &$mail;
216-
$state->name = ( $user ? $user->getName() : $username );
217-
$state->token = ( $user ? $user->getVerifierToken() : null );
212+
$state->name = $user->getName();
213+
$state->token = $user->getVerifierToken();
218214
$state->user_id = $user_id;
219215

220216
try {

src/controllers/User/ResetPassword.php

+13-19
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,19 @@
22

33
namespace BNETDocs\Controllers\User;
44

5-
use \CarlBennett\MVC\Libraries\Common;
6-
use \CarlBennett\MVC\Libraries\Controller;
7-
use \CarlBennett\MVC\Libraries\Router;
8-
use \CarlBennett\MVC\Libraries\Template;
9-
use \CarlBennett\MVC\Libraries\View;
10-
115
use \BNETDocs\Libraries\EventTypes;
126
use \BNETDocs\Libraries\Exceptions\UserNotFoundException;
137
use \BNETDocs\Libraries\Logger;
148
use \BNETDocs\Libraries\User;
15-
169
use \BNETDocs\Models\User\ResetPassword as UserResetPasswordModel;
17-
18-
use \PHPMailer\PHPMailer\Exception;
19-
use \PHPMailer\PHPMailer\PHPMailer;
20-
10+
use \CarlBennett\MVC\Libraries\Common;
11+
use \CarlBennett\MVC\Libraries\Controller;
12+
use \CarlBennett\MVC\Libraries\Router;
13+
use \CarlBennett\MVC\Libraries\Template;
14+
use \CarlBennett\MVC\Libraries\View;
15+
use \Exception;
2116
use \InvalidArgumentException;
17+
use \PHPMailer\PHPMailer\PHPMailer;
2218
use \StdClass;
2319

2420
class ResetPassword extends Controller {
@@ -156,7 +152,7 @@ protected function doPasswordReset( UserResetPasswordModel &$model, &$data ) {
156152
])
157153
);
158154

159-
} catch (\Exception $e) {
155+
} catch (Exception $e) {
160156
$model->error = 'EMAIL_FAILURE';
161157
}
162158

@@ -200,22 +196,20 @@ protected function doPasswordReset( UserResetPasswordModel &$model, &$data ) {
200196
return self::RET_FAILURE;
201197
}
202198

203-
// --
204-
$model->user->invalidateVerificationToken();
205-
// --
206-
207199
if ( $model->user->isDisabled() ) {
208200
$model->error = 'USER_DISABLED';
209201
return self::RET_FAILURE;
210202
}
211203

212-
if (!$model->user->changePassword( $model->pw1 )) {
204+
try {
205+
$model->user->setPassword($model->pw1);
206+
$model->user->setVerified(true);
207+
$model->user->commit();
208+
} catch (Exception $e) {
213209
$model->error = 'INTERNAL_ERROR';
214210
return self::RET_FAILURE;
215211
}
216212

217-
$model->user->setVerified();
218-
219213
$model->error = false;
220214
return self::RET_SUCCESS;
221215
}

src/controllers/User/Update.php

+19-12
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use \CarlBennett\MVC\Libraries\Controller;
1313
use \CarlBennett\MVC\Libraries\Router;
1414
use \CarlBennett\MVC\Libraries\View;
15+
use \Exception;
1516
use \StdClass;
1617

1718
class Update extends Controller
@@ -133,13 +134,15 @@ public function &run(Router &$router, View &$view, array &$args)
133134
else
134135
{
135136
// initiate username change
136-
if (!$model->active_user->changeUsername($model->username))
137+
try
137138
{
138-
$model->username_error = ['danger', 'CHANGE_FAILED'];
139+
$model->active_user->setUsername($model->username);
140+
$model->active_user->commit();
141+
$model->username_error = ['success', 'CHANGE_SUCCESS'];
139142
}
140-
else
143+
catch (Exception $e)
141144
{
142-
$model->username_error = ['success', 'CHANGE_SUCCESS'];
145+
$model->username_error = ['danger', 'CHANGE_FAILED'];
143146
}
144147
}
145148
}
@@ -185,13 +188,15 @@ public function &run(Router &$router, View &$view, array &$args)
185188
else
186189
{
187190
// initiate email change
188-
if (!$model->active_user->changeEmail($model->email_2))
191+
try
189192
{
190-
$model->email_error = ['danger', 'CHANGE_FAILED'];
193+
$model->active_user->setEmail($model->email_2);
194+
$model->active_user->commit();
195+
$model->email_error = ['success', 'CHANGE_SUCCESS'];
191196
}
192-
else
197+
catch (Exception $e)
193198
{
194-
$model->email_error = ['success', 'CHANGE_SUCCESS'];
199+
$model->email_error = ['danger', 'CHANGE_FAILED'];
195200
}
196201
}
197202
}
@@ -212,13 +217,15 @@ public function &run(Router &$router, View &$view, array &$args)
212217
);
213218
if ($display_name_diff)
214219
{
215-
if (!$model->active_user->changeDisplayName($display_name))
220+
try
216221
{
217-
$model->display_name_error = ['danger', 'CHANGE_FAILED'];
222+
$model->active_user->setDisplayName($display_name);
223+
$model->active_user->commit();
224+
$model->display_name_error = ['success', 'CHANGE_SUCCESS', $new_name];
218225
}
219-
else
226+
catch (Exception $e)
220227
{
221-
$model->display_name_error = ['success', 'CHANGE_SUCCESS', $new_name];
228+
$model->display_name_error = ['danger', 'CHANGE_FAILED'];
222229
}
223230
}
224231

0 commit comments

Comments
 (0)