When resolving eligible child nodes during evaluation of the "firstchild"
dispatch action, do not consider nodes allowing a login as allowed when
there already is an established session.
This fixes cases where restricted sessions are redirected to nodes they
have insufficent ACLs for, just because those nodes allow logins.
Fixes: #7218
Ref: https://forum.openwrt.org/t/x/174687
Suggested-by: @mikma
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit
65b8002adbf8219b5dad37637756fa8fcae871a6)
session = is_authenticated(node.auth);
let cacl = child.depends?.acl;
- let login = login_allowed || child.auth?.login;
+ let login = !session && (login_allowed || child.auth?.login);
if (login || check_acl_depends(cacl, session?.acls?.["access-group"]) != null) {
if (child.title && type(child.action) == "object") {