session: expose rpc_session_access() function for testing session ACLs in other rpcd...
[project/rpcd.git] / session.c
index 9f42226..b43e763 100644 (file)
--- a/session.c
+++ b/session.c
@@ -142,6 +142,7 @@ rpc_session_dump_acls(struct rpc_session *ses, struct blob_buf *b)
                {
                        if (c) blobmsg_close_table(b, c);
                        c = blobmsg_open_table(b, acl_scope->avl.key);
+                       lastobj = NULL;
                }
 
                d = NULL;
@@ -708,3 +709,14 @@ int rpc_session_api_init(struct ubus_context *ctx)
 
        return ubus_add_object(ctx, &obj);
 }
+
+bool rpc_session_access(const char *sid, const char *scope,
+                        const char *object, const char *function)
+{
+       struct rpc_session *ses = rpc_session_get(sid);
+
+       if (!ses)
+               return false;
+
+       return rpc_session_acl_allowed(ses, scope, object, function);
+}