This is an automated email from the ASF dual-hosted git repository.

hsluoyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/casbin-lua-casbin.git

commit 082d1c35c34520436e6c41f91562a03cc2a50ab9
Author: Yang Luo <[email protected]>
AuthorDate: Thu Aug 6 22:07:42 2026 +0800

    fix: call isFiltered() on adapters that expose it as a method
---
 src/main/CoreEnforcer.lua | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/main/CoreEnforcer.lua b/src/main/CoreEnforcer.lua
index 2cb464f..0249343 100644
--- a/src/main/CoreEnforcer.lua
+++ b/src/main/CoreEnforcer.lua
@@ -309,10 +309,25 @@ end
 --[[
      * isFiltered returns true if the loaded policy has been filtered.
      *
+     * An adapter may expose isFiltered either as a flag, like the file
+     * FilteredAdapter does, or as the method the FilteredAdapter interface
+     * declares. Reading it as a flag alone made every adapter of the second
+     * kind look permanently filtered, because a method is a truthy value, and
+     * the enforcer then never loaded its policy.
+     *
      * @return if the loaded policy has been filtered.
 ]]
 function CoreEnforcer:isFiltered()
-    return self.adapter.isFiltered
+    if not self.adapter then
+        return false
+    end
+
+    local filtered = self.adapter.isFiltered
+    if type(filtered) == "function" then
+        filtered = filtered(self.adapter)
+    end
+
+    return filtered and true or false
 end
 
 --[[


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to