Platform · Security & Access Control

Everyone sees only their own work

Separate databases, per-action permissions, company scope and an audit trail; checked on the server on every request, not on the screen.

GUV-01

Role permissions: authorisation objects and actions

What it does

From sign-in to the audit trail

The tools of system administrators and auditors.

GUV-02

Authorisation objects: objects by module and their actions

Permissions by object and action

A role defines which actions it may take on each authorisation object; checked on the server on every request.

Company scope

A role can be limited to specific companies; in accounting, purchasing and reports, data of an unauthorised company is rejected by the server.

Segregation of duties

The requester can’t approve their own document; the rule applies in every approval policy.

Sessions the browser can’t read

Session tokens live only in httpOnly cookies that page JavaScript can’t read; access tokens last 15 minutes and refresh tokens are single-use.

Separate database

Each customer runs in its own PostgreSQL database; database passwords and e-invoice integrator credentials are encrypted with AES-256-GCM.

GUV-03

Audit log screen: user, module, action, record and time

Audit trail

Who did what, in which module, on which record and when; reading it requires its own permission. Salary amounts are deliberately kept out of the audit log.

How it works

Five gates every request passes

Each request is checked in order before it reaches data.

1

Sign-in

With a password or a one-time code sent by email.

  • Passwords and codes hashed with bcrypt
  • Codes valid for 5 minutes, 3 attempts
  • Per-IP rate limit on sign-in endpoints
GUV-04

Sign-in screen: password and email code options

2

Customer

The request is routed only to its own database.

  • The address determines the customer
  • Membership checked on every request
  • A removed user drops out within seconds
GUV-05

Members: users and membership status

3

Permission

Role, object and action are checked.

  • Permission checks on the server, on every endpoint
  • Managing roles needs its own permission; nobody can grant themselves rights
  • Company scope on the role assignment
GUV-06

User roles: role and company scope

4

Transaction

Business rules are applied.

  • Segregation of duties: no approving your own request
  • No posting into a closed period
  • No goods receipt against an unapproved order
GUV-07

Fiscal periods: open and closed periods

5

Trail

The work is recorded.

  • User, module, action, record and time
  • Reading the audit trail needs its own permission
  • Salary amounts are not written to the audit log
GUV-08

Audit log: action history of a record

FAQ

About security

The most common questions before going live.

Each customer runs in a separate PostgreSQL database and every request is routed only to that customer’s database. Database passwords are stored encrypted with AES-256-GCM.

A role defines which actions it may take on each authorisation object, and checks run on the server on every request. Roles can be limited per company; managing roles needs its own permission, so nobody can grant themselves rights.

Session tokens are kept only in httpOnly cookies that page JavaScript can’t reach. Access tokens last 15 minutes and refresh tokens are single-use; changing a password ends all sessions, and a deactivated user can’t refresh.

Yes. The audit trail records user, module, action, record and time; reading it needs its own permission. Salary amounts are deliberately kept out of the audit log.

The test role is read-only, with no access to HR, role management, the audit trail or free-form queries. A test user can’t reach any data before accepting the confidentiality and data-protection texts.

The integrator password and API key are encrypted with AES-256-GCM and never returned in any response. If the encryption key isn’t configured, the save is rejected; nothing is written in plain text.

See Hadron with
your own data

In a 30-minute demo, we set up your processes on Hadron together.