# Permissions

# Permissions

Info Hub has a few fixed nodes plus permission strings that you choose yourself in the content files (sections, categories, pages, tiles, news).

## Fixed nodes

| Permission | Default | What it gates |
|---|---|---|
| `ks.info.user.use` | ✅ allowed | `/ksinfo`, the section and page commands, `/ksinfoitem`, the Info Book item and the `showcase_infobook` NPC |
| `ks.info.admin` | ❌ staff only | `/ksinfoadmin` (panel, reload, browsebanners) and the admin window from every entry (command, `/ksadmin` hub, the `showcase_infohub` NPC); checked again on every save, undo and reload |
| `infohub.admin` | ❌ staff only | Old admin node; still accepted everywhere `ks.info.admin` is |
| `ks.core.admin.dialog.console` | ❌ staff only | Additionally needed to add, change or remove **quick tiles that run as the console** (see below) |

The console has every permission.

### Config-driven nodes in `config.json`

| Setting | Default | Effect |
|---|---|---|
| `permissions.adminReload` | `infohub.admin.reload` | An extra node that may run `/ksinfoadmin reload` (besides the admin nodes and the console) |
| `permissions.bypassCommandFilter` | `infohub.bypass.commandfilter` | Players with this node may run commands from the Commands tab that the blocklist would stop. They still need the command's own permission, and it still runs as them |

Both can be renamed in the file or on the **General** settings page of the admin window.

---

## Quick tiles that run as the console

A quick tile with `"runAsConsole": true` runs its command with full server rights. Because of that:

- To **add, change or remove** such a tile (also its command or permission), an admin needs `ks.info.admin` **and** `ks.core.admin.dialog.console`. This is checked in the admin window, again when saving, and in web editor imports (also when the flag is written as text). With KyuubiSoft Core older than 2.9.2 the web editor cannot change console tiles at all.
- Console tiles cannot use `{placeholders}`. Tiles with placeholders always run as the player, so text a player types never runs as the console.
- The client never receives a tile's command. A click only sends a tile reference; the server looks the tile up in the current config, checks its permission again and only then runs it.
- Existing console tiles keep working.

`ks.core.admin.dialog.console` is a plain permission string, so it also works on servers without KyuubiSoft Core.

---

## Content permissions

Any permission string works; the mod just checks whether the player has it.

| Where | Field | Effect |
|---|---|---|
| `config.json` → `sections.<id>` | `permission` | Section only visible and openable with this node (also its shortcut command) |
| `commands/categories.json` | `permission` | Command category only visible with this node |
| `rules/rules.json`, `faq/faq.json` | category `permission` | Respected everywhere: browsing, search and counts |
| `custom/pages.json` | `permission` | Page and its command need this node |
| `quickaccess/quickaccess.json` | button `permission` | Tile only visible and usable with this node |
| `serverinfo/serverinfo.json` | news `permission` | News entry only visible with this node |

`null` or empty means everyone.

### Example: staff-only section

```json
"sections": {
  "staff-tools": {
    "icon": "Deco_Inkwell",
    "priority": 10,
    "permission": "infohub.staff",
    "enabled": true
  }
}
```

---

## Showcase servers

While KyuubiSoft Core runs in showcase mode, visitors may open the admin window read-only from every entry. Saving, undo and reload stay limited to real admins.

---

## LuckPerms examples

```bash
# admin access
/lp group staff permission set ks.info.admin true

# trusted admins who may edit console tiles
/lp group owner permission set ks.core.admin.dialog.console true

# section/category access for a staff group
/lp group staff permission set infohub.staff true

# let a player run commands that the filter blocks
/lp user Steve permission set infohub.bypass.commandfilter true

# take the Info Hub away from a group (rarely useful)
/lp group restricted permission set ks.info.user.use false
```

---

## Migration from older versions

- `infohub.admin` still works next to `ks.info.admin`.
- `infohub.admin.reload` works as long as it is the value of `permissions.adminReload`.
- Since 2.10.8 the Info Book item and the `showcase_infobook` NPC need `ks.info.user.use`, and the `showcase_infohub` NPC opens the admin window only for admins.