Files

1.8 KiB

Technical Specification: Auth & Integration

Authentication System (RBAC)

Architecture

We use a light-weight, client-side approach for the MVP. Authentication state is persisted in the browser's sessionStorage, meaning the user stays logged in as long as the tab/window remains open.

Storage Key

  • Key: kiq_role
  • Values: 'admin' | 'investor'

Protection Logic (ProtectedRoute.jsx)

The component wraps any route that requires authorization.

  • If no kiq_role exists: Redirect to /login (storing the intended destination in router state).
  • If allowedRoles prop is provided and the current role is not included: Redirect to / (Home).

Credential Matrix

Username Password Role Access Path
admin testthetestingtesters-2026 admin /admin, /restricted
investor-KIQ testinvestortestingit-2026 investor /restricted

Form Integration (Web3Forms)

Implementation (AccessRequest.jsx)

The form uses the https://api.web3forms.com/submit endpoint to send structured JSON data via a POST request.

API Key

  • Access Key: 5c3d4233-020d-494a-bca6-6336886f6db3 (bound to KIQ@d-hive.de)

Data Payload

The following fields are transmitted:

  • access_key: Internal API key
  • subject: Dynamic subject line containing the requester's name/company
  • from_name: Static label for identification
  • name, company, role, email, phone, purpose, reason

UX Logic

  1. Validation: Native browser validation (required, type="email") is enforced.
  2. Loading: Submit button changes to "Wird gesendet..." and is disabled during fetch.
  3. Success: Displays a success component and auto-redirects to / after 4 seconds.
  4. Error: Displays an inline banner if the API returns an error or a network timeout occurs.