Compare commits
3 Commits
885eeea339
...
5fe85b6b15
| Author | SHA1 | Date | |
|---|---|---|---|
| 5fe85b6b15 | |||
| ba53f14e4d | |||
| dcc0cbe380 |
@@ -1,155 +0,0 @@
|
||||
# Diplomarbeitsbuch
|
||||
---
|
||||
## 1. Einleitung
|
||||
### Ausgangssituation
|
||||
### Motivation
|
||||
### Kurzbeschreibung des Projekts
|
||||
### Persönlicher Aufgabenbereich
|
||||
### Abgrenzung der Arbeit
|
||||
Die Datenbankinfrastruktur war zum Projektstart bereits vorhanden und wurde nicht im Rahmen dieser Arbeit konzipiert. Die Diplomarbeit beschränkt sich auf die Entwicklung der Anwendungsschicht, bestehend aus CMS-Konfiguration, Modul- und Theme-Entwicklung.
|
||||
### Individuelle Themenstellung
|
||||
---
|
||||
## 3. Projektumfeld & Rahmenbedingungen
|
||||
### Einsatz eines bestehenden CMS (Oqtane)
|
||||
### Teamarbeit
|
||||
Das Projektteam wurde im Verlauf des Projekts von sechs auf drei Personen reduziert.
|
||||
### Schulisches Umfeld (HTL)
|
||||
### Zeitliche Rahmenbedingungen
|
||||
---
|
||||
## 4. Technologischer Überblick
|
||||
### 4.1 Web-Entwicklung mit ASP.NET & C#
|
||||
#### Backend-Logik
|
||||
#### API-basierte Kommunikation
|
||||
#### Zusammenspiel mit Oqtane
|
||||
### 4.2 Oqtane – Überblick
|
||||
#### Grundidee & Architektur
|
||||
#### Modul- & Theme-Konzept
|
||||
#### Vorteile für das Projekt
|
||||
### 4.3 CMS-Grundkonfiguration
|
||||
#### Initiale Einrichtung
|
||||
#### Modul-Integration
|
||||
#### Rollen & Berechtigungen
|
||||
#### Grundlegende Systemeinstellungen
|
||||
---
|
||||
## 5. System- und Lösungsarchitektur
|
||||
### Gesamtarchitektur des Systems
|
||||
### Einordnung von CMS, Modulen und Theme
|
||||
### Datenfluss
|
||||
### Architekturentscheidungen
|
||||
---
|
||||
## 6. Entwicklung des Oqtane Themes
|
||||
### Ziel des Themes
|
||||
### Technische Umsetzung
|
||||
### Herausforderungen
|
||||
---
|
||||
## 7. Umsetzung der Module
|
||||
### 7.1 Anmeldetool
|
||||
#### Ziel des Moduls
|
||||
#### Frontend (Eingabemaske)
|
||||
#### Backend-Logik
|
||||
#### API-Schnittstelle
|
||||
#### Datenauswertung
|
||||
#### UX-Überlegungen
|
||||
---
|
||||
### 7.2 Hall of Fame
|
||||
Das Hall-of-Fame-Modul ist ein Oqtane-Modul, das ehemalige Absolventinnen und Absolventen der Schule auf der Vereinswebseite präsentiert. Es wurde als eigenständiges, wiederverwendbares Modul innerhalb des Oqtane-Frameworks entwickelt und ermöglicht registrierten Benutzerinnen und Benutzern, sich selbst mit einem persönlichen Profil einzutragen. Die Einträge werden erst nach bewusster Veröffentlichung durch die jeweilige Person auf der öffentlichen Seite angezeigt, können als PDF exportiert werden und unterliegen einem Meldesystem zur Qualitätssicherung.
|
||||
#### Datenmodell
|
||||
Das Modul verwendet zwei Entitäten, die in der Datenbank als Tabellen abgebildet werden.
|
||||
**Entität HallOfFame**
|
||||
Die zentrale Entität repräsentiert einen einzelnen Absolventeneintrag und wird in der Datenbanktabelle `SZUAbsolventenvereinHallOfFame` gespeichert.
|
||||
| Spalte | Datentyp | Beschreibung |
|
||||
|--------|----------|--------------|
|
||||
| `HallOfFameId` | `int` (PK, Auto-Inkrement) | Primärschlüssel |
|
||||
| `ModuleId` | `int` (FK → `Module`) | Fremdschlüssel zur Oqtane-Modulinstanz |
|
||||
| `Name` | `string` | Name der Person |
|
||||
| `Year` | `int` | Abschlussjahrgang |
|
||||
| `Description` | `string` | Beschreibung bzw. Werdegang |
|
||||
| `Image` | `string` | Relativer Pfad zum hochgeladenen Foto |
|
||||
| `Link` | `string` | Optionaler externer Link |
|
||||
| `Status` | `string` (max. 50) | Veröffentlichungsstatus: „Draft" oder „Published" |
|
||||
| `UserId` | `int` | ID der Benutzerin bzw. des Benutzers, der den Eintrag erstellt hat |
|
||||
| `IsReported` | `bool` | Kennzeichnung, ob der Eintrag gemeldet wurde |
|
||||
| `ReportReason` | `string` | (Legacy) Ursprüngliches Feld für Meldegrund, abgelöst durch die Report-Tabelle |
|
||||
| `CreatedBy` | `string` | Erstellt von (Audit) |
|
||||
| `CreatedOn` | `DateTime` | Erstellzeitpunkt (Audit) |
|
||||
| `ModifiedBy` | `string` | Zuletzt geändert von (Audit) |
|
||||
| `ModifiedOn` | `DateTime` | Zeitpunkt der letzten Änderung (Audit) |
|
||||
Die Entität implementiert das Oqtane-Interface `IAuditable`, wodurch die Audit-Felder automatisch vom Framework befüllt werden. Der Fremdschlüssel `ModuleId` verknüpft jeden Eintrag mit einer bestimmten Modulinstanz und ermöglicht so den Multi-Tenant-Betrieb: Mehrere Hall-of-Fame-Module auf verschiedenen Seiten der Website verwalten jeweils unabhängige Datensätze.
|
||||
**Entität HallOfFameReport**
|
||||
Die zweite Entität bildet einzelne Meldungen zu einem Eintrag ab und wird in der Tabelle `SZUAbsolventenvereinHallOfFameReport` gespeichert.
|
||||
| Spalte | Datentyp | Beschreibung |
|
||||
|--------|----------|--------------|
|
||||
| `HallOfFameReportId` | `int` (PK, Auto-Inkrement) | Primärschlüssel |
|
||||
| `HallOfFameId` | `int` (FK → `SZUAbsolventenvereinHallOfFame`) | Zugehöriger Eintrag |
|
||||
| `Reason` | `string` | Meldegrund |
|
||||
| `CreatedBy` | `string` | Erstellt von (Audit) |
|
||||
| `CreatedOn` | `DateTime` | Erstellzeitpunkt (Audit) |
|
||||
| `ModifiedBy` | `string` | Zuletzt geändert von (Audit) |
|
||||
| `ModifiedOn` | `DateTime` | Zeitpunkt der letzten Änderung (Audit) |
|
||||
Der Fremdschlüssel zu `SZUAbsolventenvereinHallOfFame` ist mit kaskadierendem Löschen konfiguriert, sodass beim Löschen eines Eintrags automatisch alle zugehörigen Meldungen entfernt werden. Zwischen den beiden Entitäten besteht somit eine 1:n-Beziehung: Ein Eintrag kann beliebig viele Meldungen besitzen.
|
||||
#### Datenbankmigrationen
|
||||
Die Datenbankstruktur wird über Entity Framework Core Migrationen versioniert verwaltet. Oqtane verwendet ein eigenes Migrationssystem, das auf der Klasse `MultiDatabaseMigration` basiert und die Kompatibilität mit verschiedenen Datenbankanbietern sicherstellt.
|
||||
| Migration | Versionsnummer | Inhalt |
|
||||
|-----------|---------------|--------|
|
||||
| `InitializeModule` | `01.00.00.00` | Erstellt die Haupttabelle mit allen Grundspalten (Name, Year, Description, Image, Link, Status, UserId) sowie den Audit-Spalten |
|
||||
| `AddReportingColumns` | `01.00.00.02` | Erweitert die Haupttabelle um die Spalten `IsReported` und `ReportReason` |
|
||||
| `AddReportTable` | `01.00.00.03` | Erstellt die eigenständige Report-Tabelle mit Fremdschlüssel zur Haupttabelle |
|
||||
Jede Migration definiert sowohl eine Aufwärts- als auch eine Abwärtsmethode, sodass ein Rollback möglich ist.
|
||||
#### Benutzeroberfläche (Razor-Komponenten)
|
||||
Das Modul umfasst vier Blazor-Razor-Komponenten.
|
||||
**Index.razor – Übersichtsseite**
|
||||
Die Übersichtsseite zeigt alle veröffentlichten Einträge in einem responsiven Kartenlayout mit drei Spalten auf Desktop-Breite. Die Funktionalität umfasst eine Echtzeit-Textsuche über Name und Beschreibung, eine umschaltbare Sortierung nach Datum, Name oder Jahrgang sowie eine Kartenanzeige mit Bild, Name, Jahrgang und gekürzter Beschreibung. Administratorinnen und Administratoren sehen zusätzlich Warnmeldungen bei gemeldeten Einträgen und einen Lösch-Button. Angemeldete Benutzerinnen und Benutzer können über einen eigenen Button ihren Eintrag erstellen oder bearbeiten.
|
||||
**Edit.razor – Erstellungs- und Bearbeitungsseite**
|
||||
Die Edit-Komponente dient sowohl zum Erstellen als auch zum Bearbeiten eines Eintrags. Sie bietet Formularfelder für Name, Jahrgang, Beschreibung (mit Live-Zeichenzähler), Foto-Upload und Link. Über zwei Speicheroptionen kann zwischen Entwurf und Veröffentlichung gewählt werden. Eine Eigentümerprüfung verhindert das Bearbeiten fremder Einträge, und eine Duplikatprüfung verhindert das Erstellen mehrerer Einträge pro Person.
|
||||
**Details.razor – Detailseite**
|
||||
Die Details-Komponente zeigt einen einzelnen Eintrag in einem zweispaltigen Layout mit unscharfem Bildhintergrund. Administratorinnen und Administratoren sehen bei gemeldeten Einträgen eine Liste aller Meldungen mit Lösch-Button. Ein modaler Dialog ermöglicht die PDF-Vorschau sowie den Download. Die Meldefunktion wird über die zentrale `IReportUI`-Komponente eingebunden.
|
||||
**Settings.razor – Moduleinstellungen**
|
||||
Die Settings-Komponente bietet eine einfache Oberfläche für Moduleinstellungen über Oqtanes Setting-Service.
|
||||
#### Gemeinsame Melde-Komponente (IReportUI)
|
||||
Die Meldefunktion in der Detailseite ist nicht direkt im Hall-of-Fame-Modul implementiert, sondern wird über eine zentrale Schnittstelle aus dem Interfaces-Paket eingebunden. Das Hall-of-Fame-Modell implementiert das Interface `IReportable`, das eine Entität als meldbar kennzeichnet. In der Detailseite wird per Dependency Injection eine `IReportUI`-Implementierung injiziert – die konkrete `ReportComponent` stammt dabei aus dem Admin-Modul und stellt den Melden-Button samt modalem Dialog bereit. Die Komponente wird über Blazors `DynamicComponent` dynamisch gerendert. Ist keine Implementierung im Container registriert, wird die Meldefunktion schlicht nicht angezeigt. Dieses Konzept ermöglicht es, die Melde-Oberfläche zentral zu pflegen und in beliebig vielen weiteren Modulen wiederzuverwenden, ohne dass die einzelnen Module die Melde-Logik selbst implementieren müssen.
|
||||
#### PDF-Export mit QuestPDF
|
||||
Für die Generierung der PDF-Dokumente wird die Open-Source-Bibliothek QuestPDF in der Community-Edition eingesetzt. Im Server-Projekt wurde ein benutzerdefiniertes MSBuild-Target erstellt, das nach jedem Build automatisch die QuestPDF-DLL sowie die plattformspezifischen nativen Bibliotheken in das bin-Verzeichnis des Oqtane-Servers kopiert. Dies ist notwendig, weil Oqtane Module zur Laufzeit dynamisch lädt und QuestPDF native Abhängigkeiten (unter anderem die SkiaSharp-Rendering-Engine) benötigt.
|
||||
Das PDF-Design folgt einem Glasmorphismus-Ansatz. Jede Seite hat das Format DIN A4 ohne Ränder. Über die Layers-API von QuestPDF wird das Hintergrundbild von der Inhaltsebene getrennt. Der Name wird in 36 Punkt ExtraBold mit Großbuchstaben und Zeichenabstand dargestellt, der Jahrgang in 15 Punkt mit erhöhtem Zeichenabstand und die Beschreibung in 11 Punkt mit 1,5-fachem Zeilenabstand. Der Glaseffekt wird durch halbtransparente dunkle Hintergründe mit mehrschichtigen Rahmen unterschiedlicher Transparenz erzeugt.
|
||||
#### Implementierungsdetails und Problemlösungen
|
||||
Während der Entwicklung traten mehrere technische Herausforderungen auf, die im Folgenden zusammen mit ihren Lösungen beschrieben werden.
|
||||
**Bild-Upload-System**
|
||||
In der ursprünglichen Version des Moduls mussten Benutzerinnen und Benutzer eine Bild-URL manuell in ein Textfeld eingeben. Das implementierte Bild-Upload-System ersetzt dies durch eine Blazor-InputFile-Komponente mit Live-Vorschau, Fortschrittsanzeige und Lösch-Button. Die Upload-Methode prüft die Dateigröße (maximal 5 MB), öffnet die Datei als Stream und übermittelt sie als MultipartFormDataContent an den Server, der den Dateityp serverseitig validiert, einen UUID-Dateinamen generiert und die Datei speichert. Das System unterstützt beide Blazor-Rendering-Modi.
|
||||
**Concurrency Exception beim Löschen**
|
||||
Beim Löschen von Einträgen mit vorhandenen Meldungen trat eine `DbUpdateConcurrencyException` auf, verursacht durch Konflikte im Entity Framework Change Tracker. Die Lösung bestand in der Aufteilung der Löschoperation in zwei separate Transaktionen mit jeweils eigenem DbContext: zuerst werden alle zugehörigen Meldungen gelöscht, danach der Haupteintrag.
|
||||
**Kartendesign-Optimierung**
|
||||
Karten hatten ursprünglich unterschiedliche Höhen durch variierende Beschreibungslängen. Die Lösung kombiniert CSS-Flexbox auf dem Kartenelement mit einer Maximalhöhe von 150 Pixeln und `overflow: hidden` auf dem Beschreibungscontainer, sodass alle Karten einer Zeile dieselbe Höhe aufweisen.
|
||||
**Sortier-Toggle**
|
||||
Die ursprünglich fest codierten Sortierrichtungen wurden durch einen Toggle-Button neben dem Sortier-Dropdown ersetzt, der mit einem dynamischen Pfeil-Icon zwischen aufsteigender und absteigender Sortierung umschaltet. Die Sortierlogik ist in einer berechneten Eigenschaft gekapselt, die Suche und Sortierung kombiniert.
|
||||
---
|
||||
## 8. Projektorganisation & Teamarbeit
|
||||
### 8.1 Planung & Meilensteine
|
||||
#### Meilensteine
|
||||
#### Soll-/Ist-Vergleich
|
||||
#### Zeitverzug
|
||||
### 8.2 Teamverkleinerung
|
||||
#### Downsizing von 6 auf 3 Personen
|
||||
#### Neue Aufgabenverteilung
|
||||
#### Auswirkungen auf Theme-Entwicklung, Module und Zeitplanung
|
||||
---
|
||||
## 9. Übergangslösung, Probleme & Learnings
|
||||
### 9.1 Übergangslösung (Sommer 2025)
|
||||
#### Gründe & Technische Umsetzung
|
||||
#### Differenzen zur finalen Lösung
|
||||
### 9.2 Probleme
|
||||
#### Technische Probleme
|
||||
#### Organisatorische Probleme
|
||||
### 9.3 Learnings
|
||||
#### Technisch
|
||||
#### Methodisch
|
||||
#### Persönlich
|
||||
---
|
||||
## 10. Testen & Qualitätssicherung
|
||||
### Funktionstests der Module
|
||||
### Theme-Tests
|
||||
### Usability-Tests
|
||||
### Bekannte Einschränkungen
|
||||
---
|
||||
## 11. Fazit & Ausblick
|
||||
### Zielerreichung & Zusammenfassung
|
||||
### Persönliche Reflexion
|
||||
### Erweiterungsmöglichkeiten
|
||||
@@ -1,163 +0,0 @@
|
||||
---
|
||||
include_toc: true
|
||||
gitea: none
|
||||
---
|
||||
# 1. Einleitung
|
||||
## 1.1 Ausgangssituation und Motivation
|
||||
## 1.2 Zielsetzung der Diplomarbeit
|
||||
## 1.3 Nutzen der Website für den Absolventenverein
|
||||
|
||||
# 2. Projektmanagement mit Scrum
|
||||
## 2.1 Grundlagen der Scrum-Methode
|
||||
## 2.2 Rollenverteilung im Projektteam
|
||||
## 2.3 Sprintplanung und Umsetzung
|
||||
## 2.4 Vorteile von Scrum für die Webentwicklung
|
||||
|
||||
# 3. Individuelle Themenstellung & Zielsetzung
|
||||
## 3.1 Themenstellung
|
||||
|
||||
### - Entwicklung von einem CMS-Moduls:
|
||||
- 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
|
||||
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.
|
||||
### - LinkedIn Anmeldung
|
||||
Zur Verbesserung der Benutzerfreundlichkeit und zur vereinfachten Anmeldung wird eine Anmeldung über LinkedIn mithilfe OAuths 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.
|
||||
## 3.2 Zielsetzung
|
||||
|
||||
### - Technische Zielsetzung
|
||||
|
||||
### - Funktionale Zielsetzung
|
||||
|
||||
### - Gestalterische Zielsetzung
|
||||
|
||||
|
||||
# 4. Datenschutz und rechtliche Grundlagen
|
||||
|
||||
## 4.1 Bedeutung der Datenschutz-Grundverordnung (DSGVO) [^1]
|
||||
Die Datenschutz-Grundverordnung (DSGVO) ist eine rechtsverbindliche Verordnung der Europäischen Union, die seit dem 25. Mai 2018 unmittelbar in allen EU-Mitgliedstaaten gilt und den Schutz personenbezogener Daten regelt. Sie wurde erlassen, um die Rechte natürlicher Personen bei der Verarbeitung ihrer Daten zu stärken und ein einheitliches Datenschutzniveau innerhalb der EU zu gewährleisten.
|
||||
|
||||
Der Anwendungsbereich der DSGVO umfasst alle Verarbeitungen personenbezogener Daten, unabhängig davon, ob diese automatisiert oder in nicht-automatisierten Akten erfolgt. Personenbezogene Daten sind dabei definiert als alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person beziehen.
|
||||
|
||||
Die DSGVO verfolgt mehrere grundsätzliche Ziele:
|
||||
|
||||
Schutz der Grundrechte natürlicher Personen bei der Verarbeitung ihrer personenbezogenen Daten sowie die Gewährleistung ihrer Grundfreiheiten.
|
||||
|
||||
Einheitlicher Datenschutz in der EU, sodass sowohl Unternehmen innerhalb als auch außerhalb der EU, die Daten von EU-Bürgern verarbeiten, denselben Regeln unterliegen.
|
||||
|
||||
Schaffung klarer Pflichten für Datenverantwortliche und -verarbeiter zur rechtskonformen Datenverarbeitung.
|
||||
|
||||
Die DSGVO enthält dabei zentral die Grundsätze der Datenverarbeitung (§ 5 DSGVO), die sicherstellen, dass personenbezogene Daten nur rechtmäßig, zweckgebunden und in transparentem Umfang verarbeitet werden. Dazu gehören unter anderem:
|
||||
|
||||
Rechtmäßigkeit, Fairness und Transparenz der Verarbeitung
|
||||
|
||||
Zweckbindung der Datenerhebung
|
||||
|
||||
Datenminimierung und Speicherbegrenzung
|
||||
|
||||
Integrität und Vertraulichkeit der Datenverarbeitung
|
||||
|
||||
Die Einhaltung dieser Prinzipien ist für jede Organisation verpflichtend, die personenbezogene Daten verarbeitet – unabhängig von ihrer Größe oder Branche. Dies umfasst sowohl technische Aspekte der Datenverarbeitung als auch die Informationspflichten gegenüber Betroffenen, wie sie etwa in Datenschutzerklärungen umgesetzt werden müssen.
|
||||
|
||||
## 4.2 Umsetzung der Datenschutzanforderungen auf der Website [^2]
|
||||
Im Rahmen der Diplomarbeit wurde eine umfassende Analyse der Datenschutzanforderungen durchgeführt und entsprechende Maßnahmen zur Umsetzung auf der Website implementiert. Dabei wurden insbesondere die Vorgaben der DSGVO berücksichtigt, um sicherzustellen, dass die Website den geltenden Datenschutzbestimmungen entspricht.
|
||||
|
||||
Ein zentrales Element der Umsetzung war die Erstellung einer gesetzeskonformen Datenschutzerklärung. Diese informiert die Nutzerinnen und Nutzer über:
|
||||
die Art der verarbeiteten personenbezogenen Daten,
|
||||
|
||||
den Zweck der Datenverarbeitung,
|
||||
|
||||
die Rechtsgrundlagen der Verarbeitung,
|
||||
|
||||
die Speicherdauer der Daten,
|
||||
|
||||
die Weitergabe von Daten an Dritte
|
||||
|
||||
sowie über die Rechte der Betroffenen gemäß Art. 15–22 DSGVO.
|
||||
Die Datenschutzerklärung wird auf der Website gut sichtbar eingebunden und ist für alle Nutzerinnen und Nutzer jederzeit zugänglich.
|
||||
Neben der Informationspflicht wurden auch technische und organisatorische Maßnahmen umgesetzt, um die Sicherheit der verarbeiteten Daten zu gewährleisten. Dazu gehören unter anderem:
|
||||
|
||||
Verschlüsselte Übertragung von Daten mittels HTTPS
|
||||
|
||||
Passwortgeschützter Zugriff auf sensible Daten
|
||||
|
||||
Regelmäßige Sicherheitsupdates der eingesetzten Software
|
||||
|
||||
Minimierung der Datenerhebung auf das Notwendige: Es werden nur die Daten erhoben, die für die Funktion der Website unbedingt erforderlich sind.(Grundprinzip der Datenminimierung nach Art. 5 Abs. 1 lit. c DSGVO)
|
||||
|
||||
|
||||
## 4.3 Schutz personenbezogener Daten der Benutzer [^3]
|
||||
Der Schutz personenbezogener Daten der Benutzer stellt einen zentralen Bestandteil der Website des Absolventenvereins dar. Sämtliche Datenverarbeitungen erfolgen unter Berücksichtigung der Vorgaben der Datenschutz-Grundverordnung (DSGVO) sowie des österreichischen Datenschutzgesetzes (DSG).
|
||||
|
||||
Gemäß Art. 5 Abs. 1 lit. c DSGVO gilt der Grundsatz der Datenminimierung, wonach nur jene personenbezogenen Daten erhoben werden dürfen, die für den jeweiligen Zweck erforderlich sind. Auf der Website werden daher ausschließlich solche Daten verarbeitet, die für die Verwaltung der Mitgliedschaft, die Organisation von Veranstaltungen sowie die Kommunikation mit Absolventinnen und Absolventen notwendig sind.
|
||||
|
||||
Darüber hinaus wird der Grundsatz der Zweckbindung gemäß Art. 5 Abs. 1 lit. b DSGVO eingehalten. Die erhobenen Daten werden ausschließlich für die in der Datenschutzerklärung definierten Zwecke verarbeitet, insbesondere zur Organisation der Vereinstätigkeit und zur Durchführung von Absolvententreffen.
|
||||
|
||||
Eine darüberhinausgehende Weitergabe an Dritte erfolgt grundsätzlich nicht, außer wenn dies zur Erfüllung der Vereinszwecke erforderlich ist oder eine gesetzliche Verpflichtung besteht.
|
||||
|
||||
Zur Gewährleistung der Integrität und Vertraulichkeit gemäß Art. 5 Abs. 1 lit. f DSGVO werden geeignete technische und organisatorische Maßnahmen eingesetzt. Dazu zählen insbesondere der Betrieb der Website auf einem Server innerhalb Österreichs, der Abschluss von Auftragsverarbeitungsverträgen gemäß Art. 28 DSGVO mit externen Dienstleistern sowie Maßnahmen zum Schutz vor unbefugtem Zugriff, Verlust oder Missbrauch von Daten.
|
||||
|
||||
Zusätzlich werden die Betroffenenrechte gemäß Art. 15–22 DSGVO ausdrücklich gewährleistet. Benutzerinnen und Benutzer haben das Recht auf Auskunft, Berichtigung, Löschung, Einschränkung der Verarbeitung, Datenübertragbarkeit sowie Widerspruch gegen die Verarbeitung.
|
||||
|
||||
Darüber hinaus besteht das Recht, sich bei der österreichischen Datenschutzbehörde zu beschweren, sofern eine rechtswidrige Verarbeitung vermutet wird.
|
||||
|
||||
Durch die Kombination aus klar definierten Rechtsgrundlagen, transparenten Informationspflichten und technischen Schutzmaßnahmen wird ein hohes Datenschutzniveau gewährleistet und der verantwortungsvolle Umgang mit personenbezogenen Daten sichergestellt.
|
||||
# 5. Automatisierung von Serverprozessen
|
||||
|
||||
## 5.1 Notwendigkeit von Datensicherung
|
||||
Die Datensicherung ist ein wesentlicher Bestandteil der Website des Absolventenvereins. Sie dient dazu, die auf der Website gespeicherten Daten vor Verlust oder Beschädigung zu schützen.Digitale Daten bilden die Grundlage für die Funktion der Website und müssen daher regelmäßig gesichert werden. Ein Verlust oder eine Beschädigung der Daten kann zu erheblichen Problemen führen.
|
||||
|
||||
Mögliche Ursachen für einen Datenverlust sind unter anderem Hardwaredefekte, Softwarefehler, menschliches Versagen oder Cyberangriffe.
|
||||
## 5.2 Konzeption des Backup-Systems
|
||||
## 5.3 Implementierung der Backup-Skripte
|
||||
## 5.4 Wiederherstellung von Daten mittels Restore-Skripten
|
||||
|
||||
# 6. Benutzerverwaltung und Authentifizierung per LinkedIn
|
||||
## 6.1 Anmeldung über LinkedIn
|
||||
## 6.2 Profilabgleich und Benutzerverifikation
|
||||
|
||||
# 7. Octane
|
||||
|
||||
## 7.1 Einführung in das verwendete CMS Octane
|
||||
## 7.2 Modulares System von Octane
|
||||
## 7.3 Entwicklung eigener Module
|
||||
## 7.4 Vorteile der modularen Erweiterbarkeit
|
||||
|
||||
# 8. Implementierung des Premium-Bereichs
|
||||
|
||||
## 8.1 Ziel und Zweck des Premium-Bereichs
|
||||
## 8.2 Funktionen und Features des Premium-Zugangs
|
||||
## 8.3 Zugriffsbeschränkung und Benutzerrechte
|
||||
## 8.4 Mehrwert für registrierte Mitglieder
|
||||
|
||||
# 9. Technologien
|
||||
|
||||
## 9.1 ASP.NET und .NET
|
||||
## 9.2 Postgres Datenbank
|
||||
## 9.3 LinkedIn OAuth 2.0
|
||||
|
||||
# 10. Learnigs
|
||||
## 10.1 Technische und fachliche Erkenntnisse
|
||||
## 10.2 Agile Projektarbeit und Teamarbeit(Zeitmanagment)
|
||||
## 10.3 Persönliche Weiterentwicklung
|
||||
|
||||
# 11. Fazit und Ausblick
|
||||
|
||||
## 11.1 Zusammenfassung der Arbeit
|
||||
## 11.2 Mögliche Erweiterungen der Website
|
||||
## 11.3 Zukunftspotenzial für den Absolventenverein
|
||||
|
||||
# 12. Quellenverzeichnis
|
||||
|
||||
[^1]: DSGVO – Datenschutz-Grundverordnung: https://eur-lex.europa.eu/eli/reg/2016/679/
|
||||
|
||||
[^2]: RIS – Rechtsinformationssystem des Bundes: https://www.ris.bka.gv.at/
|
||||
|
||||
[^3]: DSB – Österreichische Datenschutzbehörde: https://dsb.gv.at/
|
||||
|
||||
|
||||
@@ -82,10 +82,10 @@ architecture-beta
|
||||
b:B --> T:ic
|
||||
ic:R <-- L:c
|
||||
```
|
||||
Das high-level Modul ruft lediglich eine Abstraktion eines low-level Moduls auf, welche von einem, oder mehreren low-level Modulen implementiert worden ist. Für das high-level Modul ist es hier egal, welches low-level Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar, testbar. Genau diese Modularität macht dependency injection möglich.
|
||||
Das high-level Modul ruft lediglich eine Abstraktion eines low-level Moduls auf, welche ein von einem, oder mehreren low-level Modulen implementiert worden ist. Für das high-level Modul ist es hier egal, welches low-level Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar, testbar. Genau diese Modularität macht dependency injection möglich.
|
||||
|
||||
### Microsoft Dependency Injection Framework
|
||||
Dependency Injektion ist in .Net genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]
|
||||
.Net hat ein eingebautes Framework für Dependency Injection. DI ist in .Net genau so wie Konfiguration, Protokollierung und das Optionsmuster ins Framework integriert. [^4]
|
||||
|
||||
Alle Dependencies werden in einem `service container` zur verwaltung registriert. .Net hat einen eingebauten `service container` (eine Implementierung des `IServiceProvider`). [^4]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user