blob: 6dce80ff855892f47777acc9d4b81da4462f35cf [file] [log] [blame]
--Copyright 2021 The casbin Authors. All Rights Reserved.
--
--Licensed under the Apache License, Version 2.0 (the "License");
--you may not use this file except in compliance with the License.
--You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
--Unless required by applicable law or agreed to in writing, software
--distributed under the License is distributed on an "AS IS" BASIS,
--WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--See the License for the specific language governing permissions and
--limitations under the License.
local Util = require("src/util/Util")
local Adapter = require("src/persist/Adapter")
--[[
* FileAdapter is the file adapter for Casbin.
* It can load policy from file or save policy to file.
]]
local FileAdapter = {
readOnly = false
}
setmetatable(FileAdapter, Adapter)
--[[
* FileAdapter:new(filePath) returns a new FileAdapter
*
* @param filePath the path of the policy file.
]]
function FileAdapter:new(filePath)
local o = {}
setmetatable(o, self)
self.__index = self
o.filePath = filePath
return o
end
--[[
* loadPolicy loads all policy rules from the storage.
]]
function FileAdapter:loadPolicy(model)
local f = assert(io.open(self.filePath,"r"))
if f then
for line in f:lines() do
line = Util.trim(line)
Adapter.loadPolicyLine(line, model)
end
end
f:close()
end
--[[
* savePolicy saves all policy rules to the storage.
]]
function FileAdapter:savePolicy(model, saveToFilePath)
local filePath = saveToFilePath
if not filePath then filePath = self.filePath end
local f = assert(io.open(filePath,"w"))
if model.model["p"] then
for ptype, ast in pairs(model.model["p"]) do
for _, rule in pairs(ast.policy) do
local str = ptype .. ", " .. Util.arrayToString(rule) .. "\n"
f:write(str)
end
end
end
if model.model["g"] then
for ptype, ast in pairs(model.model["g"]) do
for _, rule in pairs(ast.policy) do
local str = ptype .. ", " .. Util.arrayToString(rule) .. "\n"
f:write(str)
end
end
end
f:close()
end
--[[
* addPolicy adds a policy rule to the storage.
]]
function FileAdapter:addPolicy(sec, ptype, rule)
error("not implemented")
end
--[[
* addPolicies adds policy rules to the storage.
]]
function FileAdapter:addPolicies(sec, ptype, rules)
error("not implemented")
end
--[[
* removePolicy removes a policy rule from the storage.
]]
function FileAdapter:removePolicy(sec, ptype, rule)
error("not implemented")
end
--[[
* updatePolicy updates a policy rule from the storage
]]
function FileAdapter:updatePolicy(sec, ptype, oldRule, newRule)
error("not implemented")
end
--[[
* removeFilteredPolicy removes policy rules that match the filter from the storage.
]]
function FileAdapter:removeFilteredPolicy(sec, ptype, fieldIndex, fieldValues)
error("not implemented")
end
function FileAdapter:updateFilteredPolicies(sec, ptype, newRules, fieldIndex, fieldValues)
error("not implemented")
end
return FileAdapter