You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB
Lua

local ngx = _G.ngx
local action = setmetatable({}, require "apps.api.internal.action_base")
local assert_error = require("lapis.application").assert_error
local assert_valid = require("lapis.validate").assert_valid
local trim_filter = require("lapis.util").trim_filter
local role = require "utils.role"
local models = require "models"
local Bans = models.bans
function action:GET()
-- Verify the User's permissions
assert_error(role.mod(self.api_user))
-- Get all Bans
local bans = assert_error(Bans:get_all())
for _, ban in ipairs(bans) do
Bans:format_from_db(ban)
end
return {
status = ngx.HTTP_OK,
json = bans,
}
end
function action:POST()
-- Verify the User's permissions
assert_error(role.mod(self.api_user))
-- Validate parameters
local params = {
board_id = tonumber(self.params.board_id),
ip = self.params.ip,
reason = self.params.reason,
time = os.time(),
duration = tonumber(self.params.duration),
}
trim_filter(params)
Bans:format_to_db(params)
assert_valid(params, Bans.valid_record)
-- Create Ban
local ban = assert_error(Bans:new(params))
Bans:format_from_db(ban)
return {
status = ngx.HTTP_OK,
json = ban,
}
end
return action