IMIsle Modkit
Pages in this area

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 with moderation..
  • The group everyone applies to all players, members or not.
  • The group admin is built in. Its members are the Steam IDs from sv_admins and 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).