luci-base: allow themes to provide sysauth.htm
authorKarl Palsson <karlp@etactica.com>
Tue, 30 Jun 2020 15:40:52 +0000 (15:40 +0000)
committerJo-Philipp Wich <jo@mein.io>
Tue, 30 Jun 2020 16:14:13 +0000 (18:14 +0200)
Support for sysauth_template was (inadvertently) dropped in refactorings
to support the json menu construction.  This does not restore that
functionality, which allowed different templates for every node in the
dispatcher tree, but provides an alternative mechanism that allows a
theme to provide a sysauth.htm template file instead.

Tested-by: Karl Palsson <karlp@etactica.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 8f9433127e5d2a576a1207da46d02389b82041a5)

modules/luci-base/luasrc/dispatcher.lua

index d14a866737a15e438249e0cb4d71f30363fb6d53..8105ba0bb2089e522a13dd1b831ccc43d28381e6 100644 (file)
@@ -884,7 +884,12 @@ function dispatch(request)
                                http.status(403, "Forbidden")
                                http.header("X-LuCI-Login-Required", "yes")
 
-                               return tpl.render("sysauth", { duser = "root", fuser = user })
+                               local scope = { duser = "root", fuser = user }
+                               local ok, res = util.copcall(tpl.render_string, [[<% include("themes/" .. theme .. "/sysauth") %>]], scope)
+                               if ok then
+                                       return res
+                               end
+                               return tpl.render("sysauth", scope)
                        end
 
                        http.header("Set-Cookie", 'sysauth=%s; path=%s; SameSite=Strict; HttpOnly%s' %{