Skip to content

Commit 9df3a1b

Browse files
committed
feat(admin-log): role and permission changes are now tracked (#3833)
1 parent e07f7df commit 9df3a1b

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/GroupController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
namespace phpMyFAQ\Controller\Administration\Api;
2121

22-
use phpMyFAQ\Controller\AbstractController;
2322
use phpMyFAQ\Core\Exception;
2423
use phpMyFAQ\Permission\MediumPermission;
2524
use phpMyFAQ\User\CurrentUser;
@@ -28,7 +27,7 @@
2827
use Symfony\Component\HttpFoundation\Response;
2928
use Symfony\Component\Routing\Attribute\Route;
3029

31-
final class GroupController extends AbstractController
30+
final class GroupController extends AbstractAdministrationApiController
3231
{
3332
/**
3433
* @throws Exception

phpmyfaq/src/phpMyFAQ/Controller/Administration/Api/UserController.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
use phpMyFAQ\Administration\Report;
2323
use phpMyFAQ\Auth;
2424
use phpMyFAQ\Category;
25-
use phpMyFAQ\Controller\AbstractController;
2625
use phpMyFAQ\Core\Exception;
26+
use phpMyFAQ\Enums\AdminLogType;
2727
use phpMyFAQ\Enums\PermissionType;
2828
use phpMyFAQ\Filter;
2929
use phpMyFAQ\Helper\MailHelper;
@@ -40,7 +40,7 @@
4040
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
4141
use Symfony\Component\Routing\Attribute\Route;
4242

43-
final class UserController extends AbstractController
43+
final class UserController extends AbstractAdministrationApiController
4444
{
4545
/**
4646
* @throws Exception
@@ -102,7 +102,6 @@ public function csvExport(): Response
102102
['ID', 'Status', 'Super Admin', 'Visible', 'Display Name', 'Username', 'Email', 'Auth Source'],
103103
separator: ',',
104104
enclosure: '"',
105-
escape: '\\',
106105
eol: PHP_EOL,
107106
);
108107

@@ -122,7 +121,6 @@ public function csvExport(): Response
122121
],
123122
separator: ',',
124123
enclosure: '"',
125-
escape: '\\',
126124
eol: PHP_EOL,
127125
);
128126
}
@@ -208,6 +206,7 @@ public function activate(Request $request): JsonResponse
208206
$currentUser->getUserById((int) $userId, allowBlockedUsers: true);
209207
try {
210208
if ($currentUser->activateUser()) {
209+
$this->adminLog->log($this->currentUser, AdminLogType::USER_EDIT->value . ' (activated):' . $userId);
211210
return $this->json(['success' => $currentUser->getStatus()], Response::HTTP_OK);
212211
}
213212

@@ -254,6 +253,8 @@ public function overwritePassword(Request $request): JsonResponse
254253
return $this->json(['error' => Translation::get(key: 'ad_passwd_fail')], Response::HTTP_BAD_REQUEST);
255254
}
256255

256+
$this->adminLog->log($this->currentUser, AdminLogType::USER_CHANGE_PASSWORD->value . ':' . $userId);
257+
257258
return $this->json(['success' => Translation::get(key: 'ad_passwdsuc')], Response::HTTP_OK);
258259
}
259260

@@ -300,6 +301,8 @@ public function deleteUser(Request $request): JsonResponse
300301
$permissions->removeFromAllGroups($userId);
301302
}
302303

304+
$this->adminLog->log($this->currentUser, AdminLogType::USER_DELETE->value . ':' . $userId);
305+
303306
return $this->json(['success' => Translation::get(key: 'ad_user_deleted')], Response::HTTP_OK);
304307
}
305308

@@ -374,6 +377,8 @@ public function addUser(Request $request): JsonResponse
374377
/* @mago-expect lint:no-empty-catch-clause */
375378
}
376379

380+
$this->adminLog->log($this->currentUser, AdminLogType::USER_ADD->value . ':' . $newUser->getUserId());
381+
377382
return $this->json(['success' => Translation::get(key: 'ad_adus_suc')], Response::HTTP_OK);
378383
}
379384

@@ -433,6 +438,8 @@ public function editUser(Request $request): JsonResponse
433438
return $this->json(['error' => 'ad_msg_mysqlerr'], Response::HTTP_BAD_REQUEST);
434439
}
435440

441+
$this->adminLog->log($this->currentUser, AdminLogType::USER_EDIT->value . ':' . $userId);
442+
436443
$success =
437444
Translation::get(key: 'ad_msg_savedsuc_1')
438445
. ' "'
@@ -478,6 +485,8 @@ public function updateUserRights(Request $request): JsonResponse
478485
$user->perm->grantUserRight($userId, (int) $userRight);
479486
}
480487

488+
$this->adminLog->log($this->currentUser, AdminLogType::USER_CHANGE_PERMISSIONS->value . ':' . $userId);
489+
481490
$user->terminateSessionId();
482491
$success =
483492
Translation::get(key: 'ad_msg_savedsuc_1')

phpmyfaq/src/phpMyFAQ/Controller/Administration/GroupController.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
namespace phpMyFAQ\Controller\Administration;
2121

2222
use phpMyFAQ\Core\Exception;
23+
use phpMyFAQ\Enums\AdminLogType;
2324
use phpMyFAQ\Enums\PermissionType;
2425
use phpMyFAQ\Filter;
2526
use phpMyFAQ\Session\Token;
@@ -114,6 +115,7 @@ public function create(Request $request): Response
114115
}
115116

116117
if ($groupId !== 0) {
118+
$this->adminLog->log($this->currentUser, AdminLogType::GROUP_ADD->value . ':' . $groupId);
117119
$message = sprintf('<div class="alert alert-success">%s</div>', Translation::get(key: 'ad_group_suc'));
118120
}
119121

@@ -175,6 +177,7 @@ public function delete(Request $request): Response
175177
}
176178

177179
if ($deleteResult) {
180+
$this->adminLog->log($this->currentUser, AdminLogType::GROUP_DELETE->value . ':' . $groupId);
178181
$message = sprintf('<div class="alert alert-success">%s</div>', Translation::get(key: 'ad_group_deleted'));
179182
}
180183

@@ -222,6 +225,7 @@ public function update(Request $request): Response
222225
}
223226

224227
if ($changeResult) {
228+
$this->adminLog->log($this->currentUser, AdminLogType::GROUP_EDIT->value . ':' . $groupId);
225229
$message = sprintf(
226230
'<p class="alert alert-success">%s <strong>%s</strong> %s</p>',
227231
Translation::get(key: 'ad_msg_savedsuc_1'),
@@ -264,6 +268,8 @@ public function updateMembers(Request $request): Response
264268
$user->perm->addToGroup((int) $groupMember, $groupId);
265269
}
266270

271+
$this->adminLog->log($this->currentUser, AdminLogType::GROUP_EDIT->value . ' (members):' . $groupId);
272+
267273
$message = sprintf(
268274
'<p class="alert alert-success">%s <strong>%s</strong> %s</p>',
269275
Translation::get(key: 'ad_msg_savedsuc_1'),
@@ -306,6 +312,8 @@ public function updatePermissions(Request $request): Response
306312
$user->perm->grantGroupRight($groupId, (int) $groupPermission);
307313
}
308314

315+
$this->adminLog->log($this->currentUser, AdminLogType::GROUP_CHANGE_PERMISSIONS->value . ':' . $groupId);
316+
309317
$message = sprintf(
310318
'<p class="alert alert-success">%s <strong>%s</strong> %s</p>',
311319
Translation::get(key: 'ad_msg_savedsuc_1'),

0 commit comments

Comments
 (0)