feat: TOFU key-pinning warning, restrict chat permissions to authenticated users
This commit is contained in:
@@ -215,8 +215,8 @@ Meldungen von Anzeigen.
|
||||
| `categories_translations` | ✓ | - | - | - | Für i18n |
|
||||
| `locations` | ✓ | ✓ | - | - | User kann neue Orte anlegen |
|
||||
| `languages` | ✓ | - | - | - | Für Sprach-Auswahl |
|
||||
| `conversations` | ✓ | ✓ | ✓ | - | Filter via API-Query mit `participant_hash`, Update nur `status` |
|
||||
| `messages` | ✓ | ✓ | - | - | Filter via `conversation` ID |
|
||||
| `conversations` | - | - | - | - | **Nur User-Rolle** (s.u.) |
|
||||
| `messages` | - | - | - | - | **Nur User-Rolle** (s.u.) |
|
||||
| `favorites` | ✓ | ✓ | - | ✓ | Nur eigene |
|
||||
| `reports` | - | ✓ | - | - | Nur erstellen |
|
||||
|
||||
@@ -288,3 +288,35 @@ module.exports = async function(data) {
|
||||
```
|
||||
|
||||
**Hinweis:** Ohne diese Absicherung könnte jeder `views` auf beliebige Werte setzen.
|
||||
|
||||
---
|
||||
|
||||
## User Role Permissions (Chat)
|
||||
|
||||
Conversations und Messages sind **nicht** über die Public-Rolle zugänglich. Nur eingeloggte User (User-Rolle) dürfen diese Collections nutzen.
|
||||
|
||||
### conversations (User-Rolle)
|
||||
|
||||
| Aktion | Erlaubt | Filter / Einschränkung |
|
||||
|--------|:-------:|------------------------|
|
||||
| Read | ✓ | Alle (Client filtert via `participant_hash`) |
|
||||
| Create | ✓ | Keine Einschränkung |
|
||||
| Update | ✓ | Nur `status` Feld, kein Row-Filter |
|
||||
| Delete | - | Nicht erlaubt |
|
||||
|
||||
**Hinweis:** Im Zero-Knowledge-Design gibt es kein server-verifizierbares Feld, das beide Teilnehmer identifiziert (`participant_hash` ist nicht an einen Directus-User gebunden). Deshalb kann kein `$CURRENT_USER`-Filter für Read/Update gesetzt werden. Die Absicherung erfolgt durch: (1) Authentifizierungspflicht (Public hat keinen Zugriff), (2) Client-seitige Filterung via `participant_hash`, (3) Update nur auf `status`-Feld beschränkt, (4) Conversation-UUIDs sind nicht erratbar.
|
||||
|
||||
### messages (User-Rolle)
|
||||
|
||||
| Aktion | Erlaubt | Filter / Einschränkung |
|
||||
|--------|:-------:|------------------------|
|
||||
| Read | ✓ | Alle (Inhalte sind E2E-verschlüsselt) |
|
||||
| Create | ✓ | Keine Einschränkung |
|
||||
| Update | - | Nicht erlaubt |
|
||||
| Delete | - | Nicht erlaubt |
|
||||
|
||||
**Sicherheitsmodell:**
|
||||
- Nachrichten sind client-seitig E2E-verschlüsselt — Server sieht nur Ciphertext
|
||||
- Ohne Private Key kann niemand Nachrichten entschlüsseln
|
||||
- Public-Rolle hat **keinen** Zugriff auf `conversations` und `messages`
|
||||
- Nur eingeloggte User können Conversations erstellen und Nachrichten senden
|
||||
|
||||
Reference in New Issue
Block a user