Presentation Update
This commit is contained in:
@@ -42,52 +42,84 @@ paginate: true
|
|||||||
# Backup- & Restore-Systeme (1)
|
# Backup- & Restore-Systeme (1)
|
||||||
- **Problem**: Schutz der Daten vor Hardwareausfällen, Softwarefehlern oder Cyberangriffen.
|
- **Problem**: Schutz der Daten vor Hardwareausfällen, Softwarefehlern oder Cyberangriffen.
|
||||||
- **Lösung: Vollautomatisiertes Backup-Skript**
|
- **Lösung: Vollautomatisiertes Backup-Skript**
|
||||||
- **Cronjob** führt Skript nachtschlafend (`02:30 Uhr`) aus.
|
|
||||||
- Sichert die `PostgreSQL`-Datenbank im Custom-Format (`pg_dump -Fc`).
|
```mermaid
|
||||||
- Komprimiert den gesamten App-Dateibaum mittels `tar -cvpzf`.
|
graph TD
|
||||||
- Alle Backups erhalten UTC-Zeitstempel für ordentliche Strukturierung.
|
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)
|
# Backup- & Restore-Systeme (2)
|
||||||
- **Retention Management**:
|
- **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**:
|
- **Restore-Skript**:
|
||||||
- Kontrollierter Wiederherstellungsprozess.
|
- Kontrollierter Wiederherstellungsprozess.
|
||||||
- Integrierte Sicherheitsabfrage (`ja/nein`) vor dem Überschreiben.
|
- Integrierte Sicherheitsabfrage vor dem Überschreiben.
|
||||||
- Umbenennen bestehender Ordner als "Rückversicherung".
|
- 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)
|
# Authentifizierung mit LinkedIn (OAuth 2.0)
|
||||||
- **Ziel**: Reduzierung von Registrierungshürden und Steigerung der Plattformsicherheit (keine Passwörter im eigenen System speichern).
|
- **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)
|
# Der Premium-Bereich (1)
|
||||||
- **Zweck**: Anreiz für aktives Engagement im Absolventenverein.
|
- **Zweck**: Anreiz für aktives Engagement im Absolventenverein.
|
||||||
- **Ingenieur-Antrags-Workflow**:
|
|
||||||
- Nutzer können *Ingenieur-Anträge* (PDF) via Oqtane FileManager hochladen (`Entity: EngineerApplication`).
|
**Ingenieur-Antrags-Workflow & Prüfung:**
|
||||||
- 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.
|
**Bibliothek genehmigter Vorzeige-Anträge:**
|
||||||
|

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