From: Richard Yu Date: Thu, 10 Oct 2019 17:05:08 +0000 (+0800) Subject: luci-base: widgets.js: add user and group select X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=02a0291d141e3ac8e345a08ab010e05198c895f9;p=oweals%2Fluci.git luci-base: widgets.js: add user and group select Signed-off-by: Richard Yu --- diff --git a/modules/luci-base/htdocs/luci-static/resources/tools/widgets.js b/modules/luci-base/htdocs/luci-static/resources/tools/widgets.js index 1667fa670..9cc3e26ed 100644 --- a/modules/luci-base/htdocs/luci-static/resources/tools/widgets.js +++ b/modules/luci-base/htdocs/luci-static/resources/tools/widgets.js @@ -3,6 +3,19 @@ 'require form'; 'require network'; 'require firewall'; +'require fs'; + +function getUsers() { + return fs.lines('/etc/passwd').then(function(lines) { + return lines.map(function(line) { return line.split(/:/)[0] }); + }); +} + +function getGroups() { + return fs.lines('/etc/group').then(function(lines) { + return lines.map(function(line) { return line.split(/:/)[0] }); + }); +} var CBIZoneSelect = form.ListValue.extend({ __name__: 'CBI.ZoneSelect', @@ -559,10 +572,48 @@ var CBIDeviceSelect = form.ListValue.extend({ }, }); +var CBIUserSelect = form.ListValue.extend({ + __name__: 'CBI.UserSelect', + + load: function(section_id) { + return getUsers().then(L.bind(function(users) { + for (var i = 0; i < users.length; i++) { + this.value(users[i]); + } + + return this.super('load', section_id); + }, this)); + }, + + filter: function(section_id, value) { + return true; + }, +}); + +var CBIGroupSelect = form.ListValue.extend({ + __name__: 'CBI.GroupSelect', + + load: function(section_id) { + return getGroups().then(L.bind(function(groups) { + for (var i = 0; i < groups.length; i++) { + this.value(groups[i]); + } + + return this.super('load', section_id); + }, this)); + }, + + filter: function(section_id, value) { + return true; + }, +}); + return L.Class.extend({ ZoneSelect: CBIZoneSelect, ZoneForwards: CBIZoneForwards, NetworkSelect: CBINetworkSelect, DeviceSelect: CBIDeviceSelect, + UserSelect: CBIUserSelect, + GroupSelect: CBIGroupSelect, }); diff --git a/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json index 001e6deec..f811fb99e 100644 --- a/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json +++ b/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json @@ -30,6 +30,8 @@ "/etc/filesystems": [ "read" ], "/etc/rc.local": [ "read" ], "/etc/sysupgrade.conf": [ "read" ], + "/etc/passwd": [ "read" ], + "/etc/group": [ "read" ], "/proc/filesystems": [ "read" ], "/proc/mtd": [ "read" ], "/proc/partitions": [ "read" ],