belongsToOrg($user, $organisation); } public function view(User $user, FormFieldLibrary $library): bool { return $this->belongsToOrg($user, $library->organisation); } public function create(User $user, Organisation $organisation): bool { return $this->canManage($user, $organisation); } public function update(User $user, FormFieldLibrary $library): bool { return $this->canManage($user, $library->organisation); } public function deactivate(User $user, FormFieldLibrary $library): bool { return $this->canManage($user, $library->organisation); } private function belongsToOrg(User $user, ?Organisation $organisation): bool { if ($user->hasRole('super_admin')) { return true; } if ($organisation === null) { return false; } return $organisation->users()->where('user_id', $user->id)->exists(); } private function canManage(User $user, ?Organisation $organisation): bool { if ($user->hasRole('super_admin')) { return true; } if ($organisation === null) { return false; } return $organisation->users() ->where('user_id', $user->id) ->wherePivot('role', 'org_admin') ->exists(); } }