Цель: два пользователя root и пользователь. Root может получить доступ ко всему через веб-интерфейс, но пользователь должен видеть только некоторые части меню.OpenWrt: LuCI: как реализовать ограниченный доступ пользователя
Одним из вариантов является передача опции «sysauth» для каждого модуля. Это не очень практично, потому что пользователь увидит каждую запись в меню и получит страницу входа для каждого меню, которое ему не разрешено.
Моя идея - выяснить, кто входит в систему, а затем ничего не делает в функции index() каждого ограниченного модуля. До сих пор я не мог найти такую функцию в LuCI API (http://luci.subsignal.org/api/luci/), которая вернет текущего зарегистрированного пользователя.
Я знаю, как добавить дополнительных пользователей в OpenWrt/LuCI (https://forum.openwrt.org/viewtopic.php?pid=163013#p163013). Но это лишь часть решения.
Любая идея, как достичь моей цели?
спасибо за акцию ваше решение. У меня есть простой вопрос: я не знаю, что remove_idx пишет в какой файл? добавить «пользовательский чек» после отправки() или отправки() «modifi dispatch()». и где я использую код «удалить ненужные страницы»? Я смущен. Извините за мой плохой английский. – omid
я добавил функцию 'remove_idx' и пользовательскую проверку, но только удаляю элемент в рендеринге первой страницы меню, если перезагружать или переходить на другую страницу, элементы' leds' и 'packages' возвращаются и доступны в меню. может быть я плохо использую проверить код пользователя, можете ли вы мне помочь? – omid
Оба метода 'remove_idx()' и проверка подлинности должны находиться в файле 'libs/web/luasrc/dispatcher.lua', потому что все дерево индексов создается, как только вы открываете веб-интерфейс маршрутизаторов. Проверка подлинности пользователя должна быть в подпрограмме 'dispatch()' сразу после кода, который я показал в своем ответе. Это обычная процедура, в которой будет заполнено дерево индексов. – yegorich