diff --git a/system/modules/auth/models/AuthService.php b/system/modules/auth/models/AuthService.php index 9436a395b..073048e1c 100755 --- a/system/modules/auth/models/AuthService.php +++ b/system/modules/auth/models/AuthService.php @@ -509,6 +509,7 @@ public function getGroups() public function getGroupMembers($group_id = null, $user_id = null) { + $option = []; if ($group_id) { $option['group_id'] = $group_id; } diff --git a/system/modules/insights/models/InsightService.php b/system/modules/insights/models/InsightService.php index 9326ceeb9..606f487e5 100644 --- a/system/modules/insights/models/InsightService.php +++ b/system/modules/insights/models/InsightService.php @@ -9,6 +9,24 @@ class InsightService extends DbService { + // Function to recursively check if a user is a member of a group (or parent group) + function checkUserAccess($group, $user_id): bool + { + $groupMembers = AuthService::getInstance($this->w)->getGroupMembers($group); + if (!empty($groupMembers)) { + foreach ($groupMembers as $groupMember) { + if ($groupMember->user_id === $user_id) { + return true; + } elseif (AuthService::getInstance($this->w)->getUser($groupMember->user_id)->is_group) { + if ($this->checkUserAccess($groupMember->user_id, $user_id)) { + return true; + } + } + } + } + return false; + } + // returns all insight instances public function getAllInsights($insights) {