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
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
|