Merge branch 'main' of https://git.kocoder.xyz/Diplomarbeit-Absolventenverein/pm
Some checks failed
Word Count / count-words (push) Failing after 31s
Some checks failed
Word Count / count-words (push) Failing after 31s
This commit is contained in:
@@ -19,7 +19,7 @@ Für den Verein bedeutet das: rechtskonforme Datenverarbeitung, gesicherte Daten
|
||||
• **Premiumbereich:**
|
||||
Ein Schwerpunkt der Arbeit ist die Entwicklung eines Oqtane-Moduls, das einen Premiumbereich bereitstellt. Dieser Bereich soll ausschließlich autorisierten Benutzerinnen und Benutzern zugänglich sein und spezielle Inhalte oder Funktionen anbieten wie zum Beispiel das hochladen und ansehen von Ingeneuranträgen als Vorlage oder das finden und Kontakt aufnehmen mit anderen Benutzern. Dabei werden grundlegende Konzepte wie Benutzerrollen, Zugriffsrechte und die Integration in das bestehende CMS eingebunden.
|
||||
|
||||
### Erstellung einer Datenschutzerklärung
|
||||
#### Erstellung einer Datenschutzerklärung
|
||||
|
||||
Eine weitere wichtige Aufgabe war die Erstellung einer gesetzeskonformen Datenschutzerklärung. Diese ist erforderlich, um die Nutzerinnen und Nutzer unserer Webanwendung transparent und verständlich darüber zu informieren, welche personenbezogenen Daten erhoben, verarbeitet und gespeichert werden, zu welchem Zweck dies geschieht und welche Rechte ihnen in Bezug auf ihre Daten zustehen.
|
||||
|
||||
@@ -28,12 +28,16 @@ Eine weitere wichtige Aufgabe war die Erstellung einer gesetzeskonformen Datensc
|
||||
Zur Verbesserung der Benutzerfreundlichkeit und zur vereinfachten Anmeldung wird eine Anmeldung über LinkedIn mithilfe des OAuth-2.0-Protokolls implementiert. Diese ermöglicht es Benutzerinnen und Benutzern, sich mit einem bestehenden LinkedIn-Konto zu registrieren oder anzumelden.
|
||||
|
||||
### Datenbank-Backup und Restore
|
||||
|
||||
Abschließend wurde das Thema Datensicherung umfassend behandelt, da die Sicherstellung der Datenintegrität und Systemverfügbarkeit einen zentralen Bestandteil moderner Webanwendungen darstellt. In diesem Zusammenhang wurde ein Skript zur automatisierten Erstellung von Datenbank-Backups entwickelt, das in regelmäßigen Abständen Sicherungskopien der relevanten Daten erzeugt. Zusätzlich wurde ein weiteres Skript implementiert, das im Falle eines Datenverlusts oder Systemausfalls eine strukturierte und zuverlässige Wiederherstellung der gesicherten Daten ermöglicht.
|
||||
|
||||
Ziel dieser Maßnahmen ist es, das Risiko von Datenverlusten zu minimieren und einen stabilen sowie sicheren Betrieb der Webanwendung zu gewährleisten. Die Backup- und Restore-Prozesse sollen automatisiert ablaufen, um menschliche Fehler zu reduzieren und eine kontinuierliche, regelmäßige Datensicherung sicherzustellen. Dadurch wird eine hohe Ausfallsicherheit sowie die langfristige Verfügbarkeit der gespeicherten Informationen gewährleistet.
|
||||
## Detail-Zielsetzungen
|
||||
|
||||
### Technische Zielsetzung
|
||||
### Zielsetzung
|
||||
|
||||
#### Technische Zielsetzung
|
||||
|
||||
Die technische Zielsetzung dieses Diplomarbeitsprojekts bestand darin, eine stabile und sichere Webplattform für Alumni zu entwickeln. Als technische Grundlage wurde das Content-Management-System Oqtane verwendet, welches auf modernen Webtechnologien basiert und eine modulare Erweiterung von Funktionen ermöglicht. Die Implementierung erfolgte innerhalb der von Oqtane bereitgestellten Architektur, wodurch verschiedene Funktionen effizient integriert werden konnten.
|
||||
|
||||
Ein zentraler Bestandteil der technischen Umsetzung war die Integration einer externen Authentifizierung über LinkedIn mithilfe des Protokolls OAuth 2.0. Dadurch können sich Benutzer direkt mit ihrem LinkedIn-Konto auf der Plattform anmelden, ohne ein separates Benutzerkonto erstellen zu müssen. Dies vereinfacht den Registrierungsprozess und erhöht gleichzeitig die Sicherheit, da sensible Zugangsdaten ausschließlich beim externen Anbieter verbleiben.
|
||||
@@ -41,7 +45,8 @@ Ein zentraler Bestandteil der technischen Umsetzung war die Integration einer ex
|
||||
Zusätzlich wurde eine Datenbank auf Basis von PostgreSQL eingesetzt, um Benutzerinformationen, Inhalte sowie weitere Systemdaten zuverlässig zu speichern. Um die langfristige Verfügbarkeit dieser Daten sicherzustellen, wurde ein automatisiertes Backup-System implementiert. Dieses System erstellt regelmäßig Sicherungskopien der Datenbank sowie der wichtigsten Systemdateien. Ergänzend dazu wurde ein Restore-Skript entwickelt, mit dem gespeicherte Daten im Falle eines Systemfehlers oder Datenverlustes wiederhergestellt werden können.
|
||||
|
||||
Ein weiterer wichtiger Aspekt der technischen Zielsetzung war die Einhaltung rechtlicher Anforderungen im Bereich Datenschutz. Daher wurde eine Datenschutzerklärung erstellt und die Plattform so konzipiert, dass personenbezogene Daten der Benutzer entsprechend den Vorgaben der Datenschutz-Grundverordnung verarbeitet werden.
|
||||
### Funktionale Zielsetzung
|
||||
|
||||
#### Funktionale Zielsetzung
|
||||
|
||||
Die funktionale Zielsetzung des Projekts bestand darin, eine Onlineplattform zu entwickeln, die ehemaligen Schülerinnen und Schülern die Möglichkeit bietet, miteinander in Kontakt zu bleiben und sich über aktuelle Veranstaltungen zu informieren. Die Plattform dient somit als digitales Netzwerk für Alumni und soll den Austausch zwischen ehemaligen Mitgliedern der Bildungseinrichtung fördern.
|
||||
|
||||
@@ -52,7 +57,8 @@ Darüber hinaus bietet die Plattform Funktionen zur Darstellung und Verwaltung v
|
||||
Zusätzlich wurde ein Premiumbereich entwickelt, der bestimmte Inhalte oder Funktionen exklusiv für berechtigte Benutzer bereitstellt. Dieser Bereich erweitert die Möglichkeiten der Plattform und ermöglicht es, spezielle Inhalte nur bestimmten Benutzergruppen zugänglich zu machen.
|
||||
|
||||
Durch diese Funktionen entsteht eine Plattform, die nicht nur als Informationsquelle dient, sondern auch aktiv zur Vernetzung der Alumni beiträgt.
|
||||
### Gestalterische Zielsetzung
|
||||
|
||||
#### Gestalterische Zielsetzung
|
||||
|
||||
Neben den technischen und funktionalen Anforderungen spielte auch die Gestaltung der Plattform eine wichtige Rolle. Ziel war es, eine übersichtliche und benutzerfreundliche Oberfläche zu entwickeln, die eine einfache Navigation und intuitive Bedienung ermöglicht.
|
||||
|
||||
@@ -188,10 +194,12 @@ Neben der technischen besteht ebenfalls eine rechtliche und organisatorische Not
|
||||
### Konzeption des Backup-Systems
|
||||
Ziel des Backup-Systems war es im Falle eines Datenverlustes oder eines Systemausfalls die Daten wiederherstellen zu können. Es wurde eine Strategie entwickelt die es ermöglicht sowohl die Datenbank als auch die Dateien auf dem Server zu sichern.
|
||||
Der Umfang des Backups besteht aus zwei zentralen Komponenten:
|
||||
|
||||
1. Die PostgreSQL-Datenbank
|
||||
2. Der Ordner "oqtane.server" auf dem Server
|
||||
|
||||
|
||||
Damit wird eine vollständige Sicherung der Website ermöglicht, da bei einer reinen Datenbanksicherung wichtige Anwendungsdateien fehlen würden.
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
%% Styling
|
||||
@@ -201,7 +209,7 @@ graph TD
|
||||
|
||||
Start((Start: Cronjob 02:30)) --> Init[Initialisierung: set -euo pipefail]
|
||||
Init --> Vars[Definiere Pfade & PG-Credentials]
|
||||
|
||||
|
||||
subgraph Sicherungsphase
|
||||
Dir[Erstelle Verzeichnis: /var/backups/UTC_TS] --> DB[pg_dump -Fc: Custom Format Dump]
|
||||
DB --> Files[tar -cvpzf: Komprimierung oqtane.server]
|
||||
@@ -225,6 +233,7 @@ graph TD
|
||||
class Init,Vars,Dir,DB,Files,Rotate,Delete,Finish process;
|
||||
class Mail critical;
|
||||
```
|
||||
|
||||
Alle Backups werden lokal auf dem Server gespeichert. Diese Backups sind alle zu finden unter: /var/backups
|
||||
Für jedes Backup wird in diesem Verzeichnis ein Unterordner erstellt, dessen Name einen UTC-Zeitstempel enthält. Das ermöglicht eine saubere Trennung der Sicherungsstände und einfache chronologische Zuordnung.
|
||||
|
||||
@@ -439,7 +448,7 @@ OAuth 2.0 basiert auf dem Prinzip der delegierten Autorisierung. Dabei erlaubt e
|
||||
|
||||
Der grundlegende Ablauf einer OAuth-Authentifizierung ist in Abbildung X dargestellt. Dabei wird der Benutzer zunächst zur Login-Seite des externen Anbieters weitergeleitet. Nach erfolgreicher Anmeldung bestätigt der Benutzer, dass die Anwendung Zugriff auf bestimmte Profildaten erhalten darf.
|
||||

|
||||
*Abbildung: Ablauf der OAuth-Authentifizierung (Erstellt mit ChatGPT)*
|
||||
_Abbildung: Ablauf der OAuth-Authentifizierung (Erstellt mit ChatGPT)_
|
||||
|
||||
Die Abbildung zeigt den Ablauf der OAuth-Authentifizierung. Zunächst erfolgt die Weiterleitung zur LinkedIn-Anmeldeseite, anschließend wird ein Autorisierungscode (Authorization Code) an die Webanwendung zurückgegeben, welcher gegen einen Zugriffstoken (Access Token) ausgetauscht wird.
|
||||
|
||||
@@ -748,22 +757,22 @@ private bool IsUserPremium(System.Security.Claims.ClaimsPrincipal user)
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Req([Anfrage auf Premium-Inhalt]) --> Auth{User.Identity.IsAuthenticated?}
|
||||
|
||||
|
||||
Auth -- Nein --> Guest[Login-Seite anzeigen]
|
||||
Auth -- Ja --> Admin{Ist Administrator?}
|
||||
|
||||
|
||||
Admin -- Ja --> Grant[Zugriff gewährt]
|
||||
Admin -- Nein --> Role{In Rolle 'Premium Member'?}
|
||||
|
||||
|
||||
Role -- Ja --> Grant
|
||||
Role -- Nein --> DB{Eintrag in SZUAbsolventenvereinUserPremium?}
|
||||
|
||||
|
||||
DB -- Nein --> Deny[Premium-Upgrade-Seite anzeigen]
|
||||
DB -- Ja --> Valid{Ablaufdatum > Heute?}
|
||||
|
||||
|
||||
Valid -- Ja --> Grant
|
||||
Valid -- Nein --> Deny
|
||||
|
||||
|
||||
style Grant fill:#c8e6c9,stroke:#2e7d32
|
||||
style Deny fill:#ffcdd2,stroke:#c62828
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user