101 lines
2.9 KiB
Plaintext
101 lines
2.9 KiB
Plaintext
unset($query[$key]);
|
|
$hasLegacyTermFilter = true;
|
|
}
|
|
}
|
|
|
|
if (!$hasLegacyTermFilter) {
|
|
return null;
|
|
}
|
|
|
|
$target = site_url($route) . (!empty($query) ? '?' . http_build_query($query) : '');
|
|
return redirect()->to($target);
|
|
}
|
|
|
|
public function manageUsers()
|
|
{// Fetch all users
|
|
$users = $this->userModel->findAll();
|
|
|
|
// Fetch roles for each user
|
|
foreach ($users as &$user) {
|
|
$userRoles = ($this->userRoleModel)->where('user_id', $user['id'])->findAll();
|
|
$user['roles'] = [];
|
|
foreach ($userRoles as $userRole) {
|
|
$role = $this->roleModel->find($userRole['role_id']);
|
|
if ($role) {
|
|
$user['roles'][] = $role['name'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$data['users'] = $users;
|
|
|
|
return view('administrator/manage_users', $data);
|
|
}
|
|
|
|
public function editUser($userId)
|
|
{$user = $this->userModel->find($userId);
|
|
|
|
// Fetch roles assigned to the user
|
|
$userRoles = $this->userRoleModel->where('user_id', $userId)->findAll();
|
|
$assignedRoles = [];
|
|
foreach ($userRoles as $userRole) {
|
|
$role = $this->roleModel->find($userRole['role_id']);
|
|
if ($role) {
|
|
$assignedRoles[] = $role['id'];
|
|
}
|
|
}
|
|
|
|
$roles = $this->roleModel->findAll();
|
|
|
|
$data = [
|
|
'user' => $user,
|
|
'roles' => $roles,
|
|
'assignedRoles' => $assignedRoles,
|
|
];
|
|
|
|
return view('administrator/edit_user', $data);
|
|
}
|
|
|
|
public function updateUser()
|
|
{$userId = $this->request->getPost('id');
|
|
$roleIds = $this->request->getPost('role_ids');
|
|
|
|
// Update user details
|
|
$data = [
|
|
'id' => $userId,
|
|
'firstname' => $this->request->getPost('firstname'),
|
|
'lastname' => $this->request->getPost('lastname'),
|
|
'email' => $this->request->getPost('email'),
|
|
];
|
|
$this->userModel->save($data);
|
|
|
|
// Update user roles
|
|
$this->userRoleModel->where('user_id', $userId)->delete();
|
|
foreach ($roleIds as $roleId) {
|
|
$this->userRoleModel->save([
|
|
'user_id' => $userId,
|
|
'role_id' => $roleId,
|
|
]);
|
|
}
|
|
|
|
service('staffDirectorySync')->syncUser((int) $userId);
|
|
|
|
return redirect()->to('/administrator/manage-users');
|
|
}
|
|
|
|
public function deleteUser($userId)
|
|
{// Delete user roles first
|
|
$this->userRoleModel->where('user_id', $userId)->delete();
|
|
|
|
// Delete the user
|
|
$this->userModel->delete($userId);
|
|
|
|
return redirect()->to('/administrator/manage-users');
|
|
}
|
|
|
|
private function canManageAdminNotifications(): bool
|
|
{
|
|
$session = session();
|
|
if (! $session->get('is_logged_in')) {
|
|
return false;
|