Migrate all repos into monorepo context folders

Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
2026-06-30 20:39:52 +02:00
parent 2f2b295531
commit a5f8fb49ab
1717 changed files with 447332 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
# 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.