]> git.lizzy.rs Git - coronaserver.git/blob - privs.lua
Add event-manager role
[coronaserver.git] / privs.lua
1 coronaserver.savedata.grantall = coronaserver.savedata.grantall or {}
2 coronaserver.savedata.revokeall = coronaserver.savedata.revokeall or {}
3
4 function coronaserver.update_privs(player)
5         local name = player:get_player_name()
6         local privs = minetest.get_player_privs(name)
7         for _, priv in pairs(coronaserver.savedata.grantall) do
8                 privs[priv] = true
9         end
10         for _, priv in pairs(coronaserver.savedata.revokeall) do
11                 privs[priv] = nil
12         end
13         minetest.set_player_privs(name, privs)
14 end
15
16 function coronaserver.update_privs_all()
17         local players = minetest.get_connected_players()
18         for _, player in pairs(players) do
19                 coronaserver.update_privs(player)
20         end
21 end
22
23 minetest.register_on_joinplayer(coronaserver.update_privs)
24
25 minetest.register_chatcommand("grantall", {
26         description = "Grant a privilegue to players when they join",
27         param = "<priv>",
28         privs = {privs = true},
29         func = function(name, param)
30                 table.insert(coronaserver.savedata.grantall, param)
31                 coronaserver.update_privs_all()
32         end
33 })
34
35 minetest.register_chatcommand("revokeall", {
36         description = "Revoke a privilegue from players when they join",
37         param = "<priv>",
38         privs = {privs = true},
39         func = function(name, param)
40                 table.insert(coronaserver.savedata.revokeall, param)
41                 coronaserver.update_privs_all()
42         end
43 })
44
45
46 minetest.register_chatcommand("remove_from_allprivs", {
47         description = "Remove a priv from /grantall or /revokeall",
48         param = "<priv>",
49         privs = {privs = true},
50         func = function(name, param)
51                 local function rmpriv(tab)
52                         for i, priv in pairs(tab) do
53                                 if priv == param then
54                                         table.remove(tab, i)
55                                         return rmpriv(tab)
56                                 end
57                         end
58                 end
59                 rmpriv(coronaserver.savedata.revokeall)
60                 rmpriv(coronaserver.savedata.grantall)
61         end
62 })
63
64 minetest.register_chatcommand("show_allprivs", {
65         description = "Show list of /grantall and /revokall ",
66         param = "<priv>",
67         privs = {privs = true},
68         func = function(name, param)
69                 minetest.chat_send_player(name, "/grantall: " .. table.concat(coronaserver.savedata.grantall, ", "))
70                 minetest.chat_send_player(name, "/revokeall: " .. table.concat(coronaserver.savedata.revokeall, ", "))
71         end
72 })
73