acl
Server
modkit.acl gives permissions to players through groups. A group has a list of permission strings and can inherit from other groups. Players are members of groups by Steam ID. Everything is stored in data\acl.json under the server root, which you can also edit by hand while the server is stopped.
{
"groups": {
"moderator": { "permissions": ["moderation.*", "garage.vip"], "inherits": [] },
"everyone": { "permissions": ["help"], "inherits": [] }
},
"users": { "76561198000000001": ["moderator"] }
}
Rules.
- A permission is any string. Dots are a convention,
"moderation.kick". "*"grants everything."moderation.*"grants every permission that starts withmoderation..- The group
everyoneapplies to all players, members or not. - The group
adminis built in. Its members are the Steam IDs fromsv_adminsand it holds every permission. You can not redefine it.
Commands use permissions through the third argument of modkit.commands.add.
modkit.acl.setGroup
modkit.acl.setGroup(name, group)
| Parameter | Type | Description |
|---|---|---|
| name | string | group name |
| group.permissions | array of strings | |
| group.inherits | array of strings | names of groups whose permissions this group also gets |
Replaces the group when it exists. Members stay.
modkit.acl.setGroup("helper", { permissions = { "chat.mute" } })
modkit.acl.setGroup("moderator", { permissions = { "moderation.*" }, inherits = { "helper" } })
modkit.acl.removeGroup, groups
modkit.acl.removeGroup(name) returns true when the group existed. Its members lose the membership.
modkit.acl.groups() returns a table name -> { permissions = {...}, inherits = {...} }.
modkit.acl.addMember, removeMember
modkit.acl.addMember(player, group) returns true when the player was not a member before.
modkit.acl.removeMember(player, group) returns true when the player was a member.
player is a player table or a Steam ID string. The group does not have to exist yet.
modkit.acl.addMember("76561198000000001", "moderator")
modkit.acl.groupsOf, membersOf
modkit.acl.groupsOf(player) returns an array of group names. "admin" comes first for players from sv_admins. everyone is not listed.
modkit.acl.membersOf(group) returns an array of Steam IDs.
modkit.acl.allowed
modkit.acl.allowed(player, permission)
Returns: boolean.
if modkit.acl.allowed(player, "moderation.kick") then target:kick("bye") end
The same check as a method is player:hasPermission(permission).