From e56e442d6af125522214a9bc9ab957ac39c5c0c8 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jo@mein.io>
Date: Wed, 15 Apr 2020 22:25:48 +0200
Subject: [PATCH] luci-base: implement JSON endpoint to fetch menu information

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
---
 modules/luci-base/luasrc/controller/admin/index.lua  | 12 ++++++++++++
 .../root/usr/share/luci/menu.d/luci-base.json        |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/modules/luci-base/luasrc/controller/admin/index.lua b/modules/luci-base/luasrc/controller/admin/index.lua
index 68bbd38a7..736d0cdcc 100644
--- a/modules/luci-base/luasrc/controller/admin/index.lua
+++ b/modules/luci-base/luasrc/controller/admin/index.lua
@@ -182,3 +182,15 @@ function action_ubus()
 	luci.http.prepare_content("application/json")
 	luci.http.write_json(response)
 end
+
+function action_menu()
+	local dsp = require "luci.dispatcher"
+	local utl = require "luci.util"
+	local http = require "luci.http"
+
+	local acls = utl.ubus("session", "access", { ubus_rpc_session = http.getcookie("sysauth") })
+	local menu = dsp.menu_json(acls or {}) or {}
+
+	http.prepare_content("application/json")
+	http.write_json(menu)
+end
diff --git a/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json b/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
index 2490823a1..daad2f633 100644
--- a/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
+++ b/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
@@ -136,5 +136,14 @@
 			"function": "action_confirm"
 		},
 		"auth": {}
+	},
+
+	"admin/menu": {
+		"action": {
+			"type": "call",
+			"module": "luci.controller.admin.index",
+			"function": "action_menu"
+		},
+		"auth": {}
 	}
 }
-- 
2.25.1