Go to file
2023-11-27 12:29:47 -06:00
API checkin 2023-11-27 12:29:47 -06:00
README.org checkin 2023-11-27 12:29:47 -06:00

Squad Whitelist Management

Discord Bot

Commands

  • /link

    • Example: /link 7312312312395
    • Links user's discord ID with their provided steam64

      • If linked to another discord id, reject
      • Use the user's discord username for their username in the API
  • /group-link

    • Example: /group-link @Odin {group-uuid}
    • Links a Group on the API with a given discord ID for the role

      • If the Discord ID already exists, inform about it but allow
  • /list-groups

    • Example: /list-groups
    • Outputs:

      • Groups with Associated Discord Role

        • Example: @Odin | https://my-api.com/org/asgard/group-uuid

Events

  • on-member-update

    • For each member, look at the change in discord roles

      • If they had a role added to them that's a linked group, add them to the Group
      • If they don't have a linked Steam64, ping them in a channel to do so
  • on-startup

    • Hit up API for all members of linked roles
    • Check if the members are in those roles and modify as needed

Data

  • Org

    • Tags
    • Single Owner

      • All permissions Managers have
      • Org Perms

        • Toggle the active state
        • Delete
        • Rename
        • Add and remove org managers
        • Transfer ownership (member must be a manager of the org)
    • Managers

      • Group Perms

        • Delete
        • Create
        • Rename
        • Toggle active state
        • Manage group users
        • Manage group moderators
        • Manage group tags
        • Manage group names
      • Tag Perms

        • Delete
        • Create
        • Rename
    • Groups

      • Group: whitelist-{group-id}

        • Notes
        • Members

          • Group Perms

            • Manage Users (Add or Remove Users)
            • Manage Moderators (Allow other users to manage the group)
            • Manage Remote Import (Allowed to set a remote import)

              • This does not use the perms from the remote import, only pulls the members from the remote import list
              • Can specify a group in the remote (only pull members in that remote admin list)
            • Owner (All group perms)
        • Tags

          • Must be a tag that exists in the Org (reference a tag table)
        • Game Perms

          • Squad

            • Reserve
            • Demos
            • Kick
            • Ban
            • Etc.

Users

  • Table Name: users

    Key Type Constraints Description
    id DECIMAL PRIMARY KEY Steam64
    discord_id DECIMAL UNIQUE
    superuser BOOLEAN NOT NULL DEFAULT false

Organizations

  • Table Name: orgs

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    name VARCHAR(32) UNIQUE NOT NULL
    owner_id UUID4 REFERENCES users(id)
    discord_server_id DECIMAL
    active BOOLEAN NOT NULL DEFAULT true
Org Managers
  • Table Name: org_managers

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    user_id DECIMAL REFERENCES users(id) ON DELETE CASCADE
    org_id UUID4 REFERENCES orgs(id) ON DELETE CASCADE
    active BOOLEAN NOT NULL DEFAULT true

    Additional Constraints:

    • UNIQUE(user_id, org_id)
Tags
  • Table Name: org_tags

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    name VARCHAR(32) UNIQUE (name, org_id) NOT NULL
    org_id UUID4 REFERENCES orgs(id)
Groups
  • Table Name: org_groups

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    name VARCHAR(32) NOT NULL UNIQUE(name,org_id)
    org_id UUID4 REFERENCES orgs(id) ON DELETE CASCADE
    active BOOLEAN NOT NULL DEFAULT true
  • Additional Constraints

    • UNIQUE (name, org_id)
Group Tags
  • Table Name: org_group_tags

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    group_id UUID4 REFERENCES org_groups(id) ON DELETE CASCADE
    tag_id UUID4 REFERENCES org_tags(id) ON DELETE CASCADE
  • Additional Constraints

    • UNIQUE (group_id, tag_id)
Group Notes
  • Table Name: org_group_notes

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    group_id UUID4 UNIQUE REFERENCES org_groups(id) ON DELETE CASCADE
    note VARCHAR(512) NOT NULL
Group Members
  • Table Name: org_group_members

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    user_id DECIMAL REFERENCES users(id) ON DELETE CASCADE
    group_id UUID4 REFERENCES org_groups(id) ON DELETE CASCADE
    owner BOOLEAN NOT NULL DEFAULT false
  • Additional Constraints

    • UNIQUE (user_id, group_id)
Group Squad Details
  • Table Name: org_group_squad_details

    Key Type Constraints Description
    id UUID4 PRIMARY KEY
    group_id UUID4 REFERENCES org_groups(id) UNIQUE ON DELETE CASCADE
    remote_admin_list VARCHAR(256)
    remote_admin_list_group VARCHAR(32)
    perm_changemap BOOLEAN NOT NULL DEFAULT false Allowed to change the current map
    perm_pause BOOLEAN NOT NULL DEFAULT false Allowed to pause server gameplay
    perm_cheat BOOLEAN NOT NULL DEFAULT false Allowed to use server cheat commands
    perm_private BOOLEAN NOT NULL DEFAULT false Allowed to password protect the server
    perm_balance BOOLEAN NOT NULL DEFAULT false Allowed to ignore team balance
    perm_chat BOOLEAN NOT NULL DEFAULT false Allowed to access admin chat and make server broadcasts
    perm_kick BOOLEAN NOT NULL DEFAULT false Allowed to kick players
    perm_ban BOOLEAN NOT NULL DEFAULT false Allowed to ban players
    perm_config BOOLEAN NOT NULL DEFAULT false Allowed to change server config
    perm_cameraman BOOLEAN NOT NULL DEFAULT false Allowed to admin spectate mode
    perm_immune BOOLEAN NOT NULL DEFAULT false Allowed to cannot be kicked / banned
    perm_manageserver BOOLEAN NOT NULL DEFAULT false Allowed to shutdown server
    perm_featuretest BOOLEAN NOT NULL DEFAULT false Allowed to any features added for testing by dev team
    perm_reserve BOOLEAN NOT NULL DEFAULT false Allowed to reserve slot
    perm_demos BOOLEAN NOT NULL DEFAULT false Allowed to record Demos on the server side via admin commands
    perm_clientdemos BOOLEAN NOT NULL DEFAULT false Allowed to record Demos on the client side via commands or the replay UI
    perm_debug BOOLEAN NOT NULL DEFAULT false Allowed to Show admin stats command and other debugging info
    perm_teamchange BOOLEAN NOT NULL DEFAULT false Allowed to no timer limits on team change
    perm_forceteamchange BOOLEAN NOT NULL DEFAULT false Allowed to can issue the ForceTeamChange command
    perm_canseeadminchat BOOLEAN NOT NULL DEFAULT false Allowed to this group can see the admin chat and teamkill/admin-join notifications