Presentation Update
This commit is contained in:
@@ -42,52 +42,84 @@ paginate: true
|
||||
# Backup- & Restore-Systeme (1)
|
||||
- **Problem**: Schutz der Daten vor Hardwareausfällen, Softwarefehlern oder Cyberangriffen.
|
||||
- **Lösung: Vollautomatisiertes Backup-Skript**
|
||||
- **Cronjob** führt Skript nachtschlafend (`02:30 Uhr`) aus.
|
||||
- Sichert die `PostgreSQL`-Datenbank im Custom-Format (`pg_dump -Fc`).
|
||||
- Komprimiert den gesamten App-Dateibaum mittels `tar -cvpzf`.
|
||||
- Alle Backups erhalten UTC-Zeitstempel für ordentliche Strukturierung.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
Start((Start: Cronjob 02:30)) --> Init[Initialisierung]
|
||||
Init --> Vars[Konfiguration laden]
|
||||
|
||||
subgraph Sicherungsphase
|
||||
Dir[Erstelle Backup-Ordner] --> DB[Datenbank-Backup]
|
||||
DB --> Files[Dateisystem sichern]
|
||||
end
|
||||
|
||||
Files --> Check{Fehler?}
|
||||
Check -- Ja --> Mail[Log Error & Abbruch]
|
||||
Check -- Nein --> Rotate[Lade Backups-Liste]
|
||||
|
||||
subgraph Speicherverwaltung
|
||||
Rotate --> Count{Anzahl > 30?}
|
||||
Count -- Ja --> Delete[Älteste löschen]
|
||||
Count -- Nein --> Finish[Abschluss]
|
||||
Delete --> Finish
|
||||
end
|
||||
|
||||
Finish --> Ende((Ende))
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Backup- & Restore-Systeme (2)
|
||||
- **Retention Management**:
|
||||
- Automatische Bereinigung alter Backups (Rotation). Nur die neuesten 30 Backups (`RETAIN=30`) bleiben vorhanden, um Speicherplatz zu sparen.
|
||||
- Automatische Bereinigung alter Backups (Rotation).
|
||||
- Nur die neuesten 30 Backups bleiben vorhanden, um Speicherplatz zu sparen.
|
||||
- **Restore-Skript**:
|
||||
- Kontrollierter Wiederherstellungsprozess.
|
||||
- Integrierte Sicherheitsabfrage (`ja/nein`) vor dem Überschreiben.
|
||||
- Integrierte Sicherheitsabfrage vor dem Überschreiben.
|
||||
- Umbenennen bestehender Ordner als "Rückversicherung".
|
||||
- Neuanlage der Datenbank (`dropdb` / `createdb`) & Einspielen via `pg_restore`.
|
||||
- Neuanlage der Datenbank & Einspielen des Backups.
|
||||
|
||||
---
|
||||
|
||||
# Authentifizierung mit LinkedIn (OAuth 2.0)
|
||||
- **Ziel**: Reduzierung von Registrierungshürden und Steigerung der Plattformsicherheit (keine Passwörter im eigenen System speichern).
|
||||
- **Ablauf**:
|
||||
- Nutzer klickt auf "Via LinkedIn Anmelden".
|
||||
- Weiterleitung an LinkedIn -> Freigabe durch den Nutzer.
|
||||
- Oqtane External Login fängt Authorization Code ab, tauscht diesen gegen ein Access Token.
|
||||
- Automatisches Mapping auf lokales Benutzerkonto mithilfe der definierten *Claims* (Name, System-ID).
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
# Der Premium-Bereich (1)
|
||||
- **Zweck**: Anreiz für aktives Engagement im Absolventenverein.
|
||||
- **Ingenieur-Antrags-Workflow**:
|
||||
- Nutzer können *Ingenieur-Anträge* (PDF) via Oqtane FileManager hochladen (`Entity: EngineerApplication`).
|
||||
- Nach Prüfung und Freigabe durch Admins (`Approved`) wird automatisch für 12 Monate der Premium-Status vergeben (`UserPremium`).
|
||||
- **Bibliothek**:
|
||||
- Premium-Mitglieder können eine Übersicht aller genehmigten Vorzeige-Anträge einsehen.
|
||||
|
||||
**Ingenieur-Antrags-Workflow & Prüfung:**
|
||||

|
||||
|
||||
**Bibliothek genehmigter Vorzeige-Anträge:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
# Der Premium-Bereich (2)
|
||||
- **Mitgliedersuche & Kontakt**:
|
||||
- Gezielte, datensparsame Suchfunktion nach anderen Absolventen.
|
||||
- Die Suche filtert sensible Daten serverseitig heraus, bevor es zum Client geschickt wird.
|
||||
- **Kontakt-Mechanismus**: In-App Nachrichtensystem *ohne* Preisgabe der persönlichen E-Mail-Adresse. Oqtane übernimmt als Broker die Zustellung.
|
||||
- **Architektur**:
|
||||
- Umsetzung über EF Core (Tabellen: `UserPremium`, `EngineerApplication`, `PremiumEvent` wg. Audit-Trails).
|
||||
- Rollenbasierte Zugriffskontrollen tief in der Service-Schicht (`IsAuthorized`).
|
||||
**Architektur des Premium-Bereich-Moduls:**
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Client [WebAssembly]
|
||||
UI[Benutzeroberfläche] --> SvcC[Service Client]
|
||||
end
|
||||
|
||||
subgraph Server [ASP.NET Core]
|
||||
SvcC --> Ctrl[API Controller]
|
||||
Ctrl --> SvcS[Service Schicht]
|
||||
end
|
||||
|
||||
subgraph Data [Datenbank]
|
||||
SvcS --> EF[EF Core]
|
||||
EF --> DB[(PostgreSQL)]
|
||||
end
|
||||
```
|
||||
|
||||
**Datensparsame Mitgliedersuche & Kontaktfunktion:**
|
||||

|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user