Skip to content

Security & access

Controls that exist today, described plainly

A shared platform running rival federations on the same infrastructure has to be specific about isolation. Everything below is a mechanism in the running product — nothing here is aspirational.

  • Roles

    14, capability-based

  • Failure mode

    Deny on error

  • Audit

    Org-scoped log

Controls

How access is actually decided

Tenant isolation

01

Organizations and clubs scope users, matches, athletes, entries, and certificates. A request for another organization's record returns 403, not an empty result — the difference matters when you are sharing a platform with a rival federation.

Enforced at the API layer, not the UI

Role-based access with overrides

02

Fourteen roles with defined capabilities, plus per-organization overrides so a federation can tighten or loosen one role without a code change. Master admin is the only role that can mint another master.

roles.js capabilities + org overrides

Assignment-gated scoring

03

Being able to open a pad is not permission to score. Corner scoring is authorised against the current assignment every time an official joins, and the socket layer fails closed if it cannot verify.

authorize-scoring on every join

Plan gates that fail closed

04

Suspended and expired plans block login and authenticated APIs for that organization. If the gate check itself errors, access is denied rather than assumed.

Deny on error, not allow

Audit trail

05

Sensitive operations — official assignments, user changes, offline payment marking — are written to an organization-scoped audit log that admins and auditors can read.

Org-scoped, readable by auditor role

Signed outbound webhooks

06

Entry, payment, and bout events post to your endpoint with a signed payload and timing-safe verification, so you can trust what you receive and dry-run before going live.

HMAC with timing-safe compare

Session and credential handling

07

JWT in an HTTP-only cookie, tenant login at your own URL, invite-based password setting, and email-based password help where SMTP is configured.

HTTP-only cookie sessions

Public surface rate limiting

08

Registration, athlete lookup, support intake, and public boards are rate limited so a published link cannot be used to enumerate your roster or spam your inbox.

Applied to unauthenticated routes

Access control

Everyone sees exactly their job

A punch official should not be able to open the billing console, and a coach should not be able to edit another club's roster. This matrix is generated from the product's own capability definitions.

Capabilities granted to each Point Stream Panel role
RoleOrgsUsersBrandingAthletesEventsBracketsMatchesAudit
Platform mastermaster_adminAll organizationsAllowedAllowedAllowedAllowedAllowedAllowedAllowedAllowed
Federation adminorganization_adminOne organizationNot allowedAllowedAllowedAllowedAllowedAllowedAllowedAllowed
Game admingame_adminOrganization eventsNot allowedNot allowedNot allowedAllowedAllowedAllowedAllowedNot allowed
Fight adminfight_adminMatch operationsNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedAllowedNot allowed
Club ownerclub_ownerOne clubNot allowedNot allowedNot allowedAllowedAllowedNot allowedNot allowedNot allowed
CoachcoachClub athletesNot allowedNot allowedNot allowedAllowedAllowedNot allowedNot allowedNot allowed
Head officialhead_refereeAssigned boutsNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedAllowedNot allowed
RefereerefereeAssigned boutsNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedAllowedNot allowed
AuditorauditorRead-onlyNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedNot allowed
Punch officials 1–4punch_1…punch_4Own punch slotNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedNot allowedNot allowed

Organization isolation

Users, matches, athletes, and certificates are scoped to an organization. A cross-tenant request returns 403 rather than an empty list.

Per-org overrides

A federation can tighten or loosen a capability for one role without a code change, and the override is applied on top of these defaults.

Audit trail

Sensitive operations — assignments, user changes, payment marking — are written to an organization-scoped audit log.

Straight answers

What we will not claim

Procurement conversations go faster when the gaps are on the table first.

  • We do not display compliance badges we have not earned. There is no SOC 2 or ISO certification to claim today.
  • Razorpay, SMTP, Sentry, Redis, and object storage are configured per deployment. The status page reports what is actually enabled rather than showing green by default.
  • SMS and WhatsApp notification channels exist as an outbox with provider stubs. When they are unconfigured the product reports skipped sends instead of failing silently.
  • Penetration test reports and a security questionnaire response are available on request during procurement.

Send us your security questionnaire

We will answer it against the running product rather than a template, and flag anything that is configuration rather than a guarantee.

  • Walk through a live bout on your own sport
  • See the control room with your mat layout
  • Review tenancy, roles, and audit before you commit