Admin Panel
The /marketadmin command opens a full NUI moderation panel — a dashboard with live charts, paginated tables of every listing, order, conversation and review, a player lookup with moderation tools, a ban manager and an audit log.
F5Cfg.Admin = {
command = 'marketadmin',
acePermission = 'f5market.admin',
frameworkGroups = { 'admin', 'god' },
auditWebhook = true,
actionCooldownMs = 800,
pageSize = 25,
}
Access Control
A player may open the panel — and perform any action in it — if either condition is met:
- ACE — they pass
IsPlayerAceAllowed(src, acePermission)(defaultf5market.admin), or - Framework group — they belong to one of
frameworkGroups(defaultadmin,god).
Every read and every action re-checks this on the server, so the panel can't be opened or driven by a non-admin client.
Granting via ACE
add_ace group.admin f5market.admin allow
add_principal identifier.steam:110000100000000 group.admin
Set acePermission = '' to disable the ACE path entirely.
Granting via Framework Group
The group check (Bridge.HasGroup) is resolved per framework:
| Framework | Group check |
|---|---|
| QBCore | QBCore.Functions.HasPermission(src, group) if available, otherwise ACE group.<name> |
| QBox | ACE group.<name> |
| ESX | xPlayer.getGroup() == group |
So on a stock server, anyone in the admin or god group already has access — no extra setup. Set frameworkGroups = {} to disable the group path entirely.
If you set both acePermission = '' and frameworkGroups = {}, nobody can open the panel. Keep at least one path enabled.
Rate Limiting & Audit
actionCooldownMs(default 800) — a per-admin debounce on mutating actions, so a double-click can't fire an action twice.pageSize(default 25) — rows per page in every paginated table.auditWebhook(defaulttrue) — every admin action is written to thef5_shadowmarket_admin_logtable and, when this is on, mirrored to Discord as anadmin_auditwebhook. See Webhooks.
Panel Tabs
Dashboard
KPIs and charts at a glance:
- KPIs — turnover (sum of completed orders), money currently in escrow (pending + ready orders), active listings, active auctions, active bans.
- Orders by status — a doughnut chart (Chart.js).
- Top sellers by gross — a horizontal bar chart, plus a table of the top 10 sellers and the largest transactions.
Listings
Paginated table of every listing (ID, title, item, type, seller, price, status), filterable by seller id, item name and status. Actions on active listings:
| Action | Effect |
|---|---|
| Cancel listing | Cancel an active listing (with a reason); refunds any leading bid and returns the item to the seller |
| Takedown listing | Force-remove a listing (with a reason) |
Orders
Paginated table of orders (ID, item, buyer, seller, price, status), filterable by party (buyer/seller id) and status. Action on pending/ready orders:
| Action | Effect |
|---|---|
| Refund order | Refund the buyer and return the item to the seller |
Players
Look up a player by citizen id to see a full profile:
- Identity (name, online status, citizen id, and Steam/FiveM/Discord identifiers when available).
- Ratings (average + review count) and stats (listings, sold, bought, total earned, total spent).
- Their listings, sold orders and bought orders.
- Active bans, with an unban action.
Moderation tools:
| Action | Effect |
|---|---|
| Ban | Restrict market access — scope full / sell / bid, a duration in hours (0 = permanent) and a reason |
| Unban | Lift an active ban |
Bans are stored in f5_shadowmarket_bans with the chosen scope.
Chat
Browse conversations (ID, listing, buyer, seller, last-message time) and open any thread to read messages. Action:
| Action | Effect |
|---|---|
| Hide message | Hide a message from the conversation |
Reviews
Paginated table of reviews (ID, seller, buyer, item, rating, comment, status, date), filterable by seller id and visibility. Actions:
| Action | Effect |
|---|---|
| Hide review | Hide a visible review |
| Unhide review | Restore a hidden review |
| Delete review | Permanently delete a review |
Logs
The audit log — every admin action with timestamp, admin, action, target type, target id and a JSON detail snapshot. Target types are listing, order, offer, player, message and review.
See Also
- Commands → /marketadmin — the command and its options
- Configuration → Admin Panel — every
F5Cfg.Adminfield - Framework Compatibility → Frameworks — how the group check resolves per framework
- Webhooks — the
admin_auditDiscord event