diff --git a/app/Http/Transformers/GroupsTransformer.php b/app/Http/Transformers/GroupsTransformer.php index 920c856b1..9495aeeec 100644 --- a/app/Http/Transformers/GroupsTransformer.php +++ b/app/Http/Transformers/GroupsTransformer.php @@ -24,7 +24,7 @@ class GroupsTransformer $array = [ 'id' => (int) $group->id, 'name' => e($group->name), - 'permissions' => json_decode($group->permissions), + 'permissions' => $group->decodePermissions(), 'users_count' => (int) $group->users_count, 'notes' => Helper::parseEscapedMarkedownInline($group->notes), 'created_by' => ($group->adminuser) ? [ diff --git a/app/Models/Group.php b/app/Models/Group.php index ef60e6737..fd27dfbc0 100755 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -80,7 +80,21 @@ class Group extends SnipeModel */ public function decodePermissions() { - return json_decode($this->permissions, true); + // Set default to empty JSON if the value is null + $permissions = json_decode($this->permissions ?? '{}', JSON_OBJECT_AS_ARRAY); + + // If there are no permissions, return an empty array + if (!$permissions) { + return []; + } + + // Otherwise, loop through the permissions and cast the values as integers + foreach ($permissions as $permission => $value) { + $permissions[$permission] = (int) $value; + } + + + return $permissions; } /**