luci-base: only render theme specific sysauth template when it exists
Avoid displaying non-fatal "File not found" exceptions when a theme is not shipping an own sysauth template. Fixes: #6118 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
885e3a5f0b
commit
bed67dc000
2 changed files with 15 additions and 7 deletions
|
@ -922,16 +922,18 @@ dispatch = function(_http, path) {
|
|||
http.header('X-LuCI-Login-Required', 'yes');
|
||||
|
||||
let scope = { duser: 'root', fuser: user };
|
||||
let theme_sysauth = `themes/${basename(runtime.env.media)}/sysauth`;
|
||||
|
||||
try {
|
||||
runtime.render(`themes/${basename(runtime.env.media)}/sysauth`, scope);
|
||||
}
|
||||
catch (e) {
|
||||
runtime.env.media_error = `${e}`;
|
||||
runtime.render('sysauth', scope);
|
||||
if (runtime.is_ucode_template(theme_sysauth) || runtime.is_lua_template(theme_sysauth)) {
|
||||
try {
|
||||
return runtime.render(theme_sysauth, scope);
|
||||
}
|
||||
catch (e) {
|
||||
runtime.env.media_error = `${e}`;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
return runtime.render('sysauth', scope);
|
||||
}
|
||||
|
||||
let cookie_name = (http.getenv('HTTPS') == 'on') ? 'sysauth_https' : 'sysauth_http',
|
||||
|
|
|
@ -65,6 +65,12 @@ const Class = {
|
|||
return access(`${template_directory}/${path}.ut`);
|
||||
},
|
||||
|
||||
is_lua_template: function(path) {
|
||||
let vm = this.init_lua(true);
|
||||
|
||||
return vm && access(`${vm.get('_G', 'luci', 'template', 'viewdir')}/${path}.htm`);
|
||||
},
|
||||
|
||||
render_ucode: function(path, scope) {
|
||||
let tmplfunc = loadfile(path, { raw_mode: false });
|
||||
|
||||
|
|
Loading…
Reference in a new issue