mirror of
https://github.com/itflow-org/itflow
synced 2026-07-26 18:27:14 +00:00
Feature: Add Deny Client Access to Client Access Permssions - BREAKS UI, MUST UPDATE DB USING php scripts/cli_update.php --db_update
This commit is contained in:
@@ -49,17 +49,30 @@ if ($session_user_archived_at !== null) {
|
||||
redirect("/login.php");
|
||||
}
|
||||
|
||||
// Load user client permissions
|
||||
$user_client_access_sql = "SELECT client_id FROM user_client_permissions WHERE user_id = $session_user_id";
|
||||
// Load user client permissions (allow + deny lists)
|
||||
$user_client_access_sql = "SELECT client_id, permission_type FROM user_client_permissions WHERE user_id = $session_user_id";
|
||||
$user_client_access_result = mysqli_query($mysqli, $user_client_access_sql);
|
||||
|
||||
$client_access_array = [];
|
||||
$client_access_array = []; // allow
|
||||
$client_deny_array = []; // deny
|
||||
while ($row = mysqli_fetch_assoc($user_client_access_result)) {
|
||||
$client_access_array[] = $row['client_id'];
|
||||
if ($row['permission_type'] === 'deny') {
|
||||
$client_deny_array[] = (int) $row['client_id'];
|
||||
} else {
|
||||
$client_access_array[] = (int) $row['client_id'];
|
||||
}
|
||||
}
|
||||
|
||||
$client_access_string = implode(',', $client_access_array);
|
||||
$client_deny_string = implode(',', $client_deny_array);
|
||||
|
||||
$access_permission_query = "";
|
||||
if ($client_access_string && !$session_is_admin) {
|
||||
$access_permission_query = "AND clients.client_id IN ($client_access_string)";
|
||||
if (!$session_is_admin) {
|
||||
// Restrict to the allow list (if any), then subtract the deny list
|
||||
if ($client_access_string) {
|
||||
$access_permission_query .= " AND clients.client_id IN ($client_access_string)";
|
||||
}
|
||||
if ($client_deny_string) {
|
||||
$access_permission_query .= " AND clients.client_id NOT IN ($client_deny_string)";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user