1
0
cuberite-2a/MCServer/Plugins/Core/web_permissions.lua
nielsbreu@gmail.com 474b113b2f made the permission page more manageable.
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1453 0a769ca7-a7f5-676a-18bf-c427514a06d6
2013-05-06 19:53:35 +00:00

134 lines
4.1 KiB
Lua

local function HTML_Option( value, text, selected )
if( selected == true ) then
return [[<option value="]] .. value .. [[" selected>]] .. text .. [[</option>]]
else
return [[<option value="]] .. value .. [[">]] .. text .. [[</option>"]]
end
end
local function ShowUsersTable()
local Content = "<h4>Users</h4>"
local NumUsers = UsersIni:GetNumKeys()
Content = Content .. "<table>"
if( NumUsers > 0 ) then
Content = Content .. "<tr><th></th><th>User</th><th>Groups</th></tr>"
for i=0, NumUsers-1 do
local UserName = UsersIni:GetKeyName( i )
Content = Content .. "<tr>"
Content = Content .. "<td style='width: 10px;'>" .. i .. ".</td>"
Content = Content .. "<td>" .. UserName .. "</td>"
Content = Content .. "<td>"
Content = Content .. UsersIni:GetValue( UserName, "Groups", "-" )
Content = Content .. "</td>"
Content = Content .. "</tr>"
end
else
Content = Content .. "<tr><td>None</td></tr>"
end
Content = Content .. "</table>"
return Content
end
local function ShowGroupsTable()
local Content = "<h4>Groups</h4>"
local NumGroups = GroupsIni:GetNumKeys()
Content = Content .. "<table>"
if( NumGroups > 0 ) then
Content = Content .. "<tr><th></th><th>Name</th><th>Permissions</th><th>Color</th></tr>"
for i=0, NumGroups-1 do
local GroupName = GroupsIni:GetKeyName( i )
Content = Content .. "<tr>"
Content = Content .. "<td style='width: 10px;'>" .. i .. ".</td>"
Content = Content .. "<td>" .. GroupName .. "</td>"
Content = Content .. "<td>"
Content = Content .. GroupsIni:GetValue( GroupName, "Permissions", "-" )
Content = Content .. "</td>"
Content = Content .. "<td>"
Content = Content .. GroupsIni:GetValue( GroupName, "Color", "-" )
Content = Content .. "</td>"
Content = Content .. "</tr>"
end
else
Content = Content .. "<tr><td>None</td></tr>"
end
Content = Content .. "</table>"
return Content
end
local function HTML_Select_Group( name, defaultValue )
Groups = ""
for I=0, GroupsIni:GetNumKeys() - 1 do
Groups = Groups ..
HTML_Option(GroupsIni:KeyName(I), GroupsIni:KeyName(I), defaultValue == GroupsIni:KeyName(I) )
end
return [[<select name="]] .. name .. [[">]] .. Groups .. [[</select>]]
end
local function AddPlayers( Request )
local Content = "<h4>Add or change Players</h4>"
if( Request.PostParams["AddPlayerToGroup"] ~= nil ) then
if Request.PostParams["AddPlayer"] ~= "" then
if Request.PostParams["AddGroups"] ~= "" then
if GroupsIni:FindKey(Request.PostParams["AddGroup"]) == -1 then
return "Group does not exist"
end
UsersIni:DeleteKey(Request.PostParams["AddPlayer"])
UsersIni:GetValueSet(Request.PostParams["AddPlayer"], "Groups", Request.PostParams["AddGroup"])
UsersIni:WriteFile()
local loopPlayers = function( Player )
if Player:GetName() == Request.PostParams["AddPlayer"] then
Player:SendMessage( cChatColor.Green .. "You were moved to group " .. Request.PostParams["AddGroup"] )
Player:LoadPermissionsFromDisk()
end
end
local loopWorlds = function ( World )
World:ForEachPlayer( loopPlayers )
end
cRoot:Get():ForEachWorld( loopWorlds )
end
end
end
Content = Content .. [[
<form method="POST">
<table>
<tr><td style="width: 20%;">Player:</td>
<td><input type="text" name="AddPlayer" value=""></td></tr><br>
<tr><td style="width: 20%;">Group:</td>
<td>]] .. HTML_Select_Group("AddGroup", GroupsIni:KeyName(0) ) .. [[</td></tr>
</table>
<input type="submit" value="Add Player" name="AddPlayerToGroup">]]
return Content
end
function HandleRequest_Permissions( Request )
GroupsIni = cIniFile("groups.ini")
if( GroupsIni:ReadFile() == false ) then
return "Could not read groups.ini!"
end
UsersIni = cIniFile("users.ini")
if( UsersIni:ReadFile() == false ) then
return "Could not read users.ini!"
end
local Content = ""
Content = Content .. AddPlayers( Request )
Content = Content .. ShowGroupsTable()
Content = Content .. ShowUsersTable()
return Content
end