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

popduke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bifromq.git


The following commit(s) were added to refs/heads/main by this push:
     new 527ac7e58 Change DemoAuthProvider fallback behavior to fit plugin 
manager changes (#239)
527ac7e58 is described below

commit 527ac7e585d14e0b7963e9d9aa1925d6b62b0c98
Author: Gu Jiawei <[email protected]>
AuthorDate: Sun Apr 5 21:17:46 2026 -0700

    Change DemoAuthProvider fallback behavior to fit plugin manager changes 
(#239)
    
    1. change DemoAuthProvider fallback behavior to fit new plugin manager 
changes.
    2. make fallback plugin completely align with dev only auth plugin;
    3. add a checkPermission to avoid deletion override missing.
    
    ---------
    
    Co-authored-by: Yonny(Yu) Hao <[email protected]>
---
 .../bifromq/demo/plugin/DemoAuthProvider.java      | 50 ++++++++++++++++++----
 1 file changed, 41 insertions(+), 9 deletions(-)

diff --git 
a/build/build-plugin-demo/src/main/java/org/apache/bifromq/demo/plugin/DemoAuthProvider.java
 
b/build/build-plugin-demo/src/main/java/org/apache/bifromq/demo/plugin/DemoAuthProvider.java
index ecad8de73..4b2f8a53a 100644
--- 
a/build/build-plugin-demo/src/main/java/org/apache/bifromq/demo/plugin/DemoAuthProvider.java
+++ 
b/build/build-plugin-demo/src/main/java/org/apache/bifromq/demo/plugin/DemoAuthProvider.java
@@ -23,10 +23,12 @@ import java.net.URI;
 import java.util.concurrent.CompletableFuture;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.bifromq.plugin.authprovider.IAuthProvider;
+import org.apache.bifromq.plugin.authprovider.type.CheckResult;
+import org.apache.bifromq.plugin.authprovider.type.Granted;
 import org.apache.bifromq.plugin.authprovider.type.MQTT3AuthData;
 import org.apache.bifromq.plugin.authprovider.type.MQTT3AuthResult;
 import org.apache.bifromq.plugin.authprovider.type.MQTTAction;
-import org.apache.bifromq.plugin.authprovider.type.Reject;
+import org.apache.bifromq.plugin.authprovider.type.Ok;
 import org.apache.bifromq.type.ClientInfo;
 import org.pf4j.Extension;
 
@@ -40,7 +42,7 @@ public class DemoAuthProvider implements IAuthProvider {
         IAuthProvider delegate1;
         String webhookUrl = System.getProperty(PLUGIN_AUTHPROVIDER_URL);
         if (webhookUrl == null) {
-            log.info("No webhook url specified, the fallback behavior will 
reject all auth/check requests.");
+            log.info("No webhook url specified, the fallback behavior will 
grant all auth/check requests.");
             delegate1 = new FallbackAuthProvider();
         } else {
             try {
@@ -64,20 +66,50 @@ public class DemoAuthProvider implements IAuthProvider {
         return delegate.check(client, action);
     }
 
+    @Override
+    public CompletableFuture<CheckResult> checkPermission(ClientInfo client, 
MQTTAction action) {
+        return delegate.checkPermission(client, action);
+    }
+
     static class FallbackAuthProvider implements IAuthProvider {
+        private static final CheckResult GRANTED = 
CheckResult.newBuilder().setGranted(
+                Granted.getDefaultInstance()).build();
         @Override
         public CompletableFuture<MQTT3AuthResult> auth(MQTT3AuthData authData) 
{
-            return CompletableFuture.completedFuture(
-                MQTT3AuthResult.newBuilder().setReject(Reject.newBuilder()
-                        .setCode(Reject.Code.Error)
-                        .setReason("No webhook url for auth provider 
configured")
-                        .build())
-                    .build());
+            if (!(authData.getUsername() == null || 
authData.getUsername().isEmpty())) {
+                String[] username = authData.getUsername().split("/");
+                if (username.length == 2) {
+                    return CompletableFuture.completedFuture(MQTT3AuthResult
+                            .newBuilder()
+                            .setOk(Ok.newBuilder()
+                                    .setTenantId(username[0])
+                                    .setUserId(username[1])
+                                    .build())
+                            .build());
+                } else {
+                    return 
CompletableFuture.completedFuture(MQTT3AuthResult.newBuilder()
+                            .setOk(Ok.newBuilder()
+                                    .setTenantId("DevOnly")
+                                    .setUserId(authData.getUsername()).build())
+                            .build());
+                }
+            } else {
+                return 
CompletableFuture.completedFuture(MQTT3AuthResult.newBuilder()
+                        .setOk(Ok.newBuilder()
+                                .setTenantId("DevOnly")
+                                .setUserId("DevUser").build())
+                        .build());
+            }
         }
 
         @Override
         public CompletableFuture<Boolean> check(ClientInfo client, MQTTAction 
action) {
-            return CompletableFuture.completedFuture(false);
+            return CompletableFuture.completedFuture(true);
+        }
+
+        @Override
+        public CompletableFuture<CheckResult> checkPermission(ClientInfo 
client, MQTTAction action) {
+            return CompletableFuture.completedFuture(GRANTED);
         }
     }
 }

Reply via email to