Texte aktualisiert

blaerf 2025-11-16 12:05:18 +01:00
parent 1d5768e704
commit 5fb28a9a90

@ -1,4 +1,4 @@
# Projektstruktur (Vorschlag) # Projektstruktur
*Hinweis: Dies ist lediglich ein Vorschlag meinerseits, um eine klare, sichere und nachvollziehbare Struktur für unser PHP-/AD-Projekt zu gewährleisten.* *Hinweis: Dies ist lediglich ein Vorschlag meinerseits, um eine klare, sichere und nachvollziehbare Struktur für unser PHP-/AD-Projekt zu gewährleisten.*
@ -9,30 +9,30 @@ Dieses Dokument beschreibt die empfohlene Ordnerstruktur für das Gitea-Reposito
# 1. Ordnerstruktur im Gitea-Repository # 1. Ordnerstruktur im Gitea-Repository
``` ```
ad-admin-panel/ ad-admin-panel\
├── public/ ├── public\
│ ├── index.php │ ├── index.php
│ ├── css/ │ ├── css\
│ ├── js/ │ ├── js\
│ ├── images/ │ ├── images\
│ └── assets/ │ └── assets\
├── app/ ├── app\
│ ├── Controllers/ │ ├── Controllers\
│ ├── Services/ │ ├── Services\
│ │ ├── Ldap/ │ │ ├── Ldap\
│ │ ├── Powershell/ │ │ ├── Powershell\
│ │ └── Snmp/ │ │ └── Snmp\
│ ├── Models/ │ ├── Models\
│ └── Helpers/ │ └── Helpers\
├── config/ ├── config\
│ ├── config.example.php │ ├── config.example.php
│ └── config.php │ └── config.php
├── scripts/ ├── scripts\
│ └── powershell/ │ └── powershell\
├── storage/ ├── storage\
│ ├── logs/ │ ├── logs\
│ └── uploads/ │ └── uploads\
├── docs/ ├── docs\
│ ├── Architektur.md │ ├── Architektur.md
│ ├── Deployment.md │ ├── Deployment.md
│ └── API-Endpunkte.md │ └── API-Endpunkte.md
@ -59,17 +59,17 @@ Sicherheit. Alles, was sensibel ist (Config, PowerShell, Logs), liegt *außerhal
--- ---
### **app/** ### **app\**
Hier liegt die komplette PHP-Anwendungslogik. Hier liegt die komplette PHP-Anwendungslogik.
#### **app/Controllers/** #### **app\Controllers\**
- Verarbeiten Requests aus dem Frontend - Verarbeiten Requests aus dem Frontend
- Rufen passende Services auf - Rufen passende Services auf
- Geben Views oder JSON zurück - Geben Views oder JSON zurück
Beispiel: `UserController.php` zeigt Benutzerliste an oder verarbeitet Formulare. Beispiel: `UserController.php` zeigt Benutzerliste an oder verarbeitet Formulare.
#### **app/Services/** #### **app\Services\**
Hier steckt die "Fachlogik" des Projekts. Hier steckt die "Fachlogik" des Projekts.
- keine HTML-Ausgabe - keine HTML-Ausgabe
@ -77,28 +77,28 @@ Hier steckt die "Fachlogik" des Projekts.
Unterordner: Unterordner:
**Ldap/** **Ldap\**
- LDAP-Verbindungen - LDAP-Verbindungen
- User anlegen/ändern/löschen - User anlegen/ändern/löschen
- Passwörter setzen - Passwörter setzen
- Gruppen verwalten - Gruppen verwalten
**Powershell/** **Powershell\**
- PHP-Wrapper für `.ps1`-Skripte - PHP-Wrapper für `.ps1`-Skripte
- Benutzerverwaltung per AD-Cmdlets - Benutzerverwaltung per AD-Cmdlets
**Snmp/** **Snmp\**
- SNMP-Status auslesen - SNMP-Status auslesen
- CPU/RAM/Platten/etc. abrufen - CPU/RAM/Platten/etc. abrufen
#### **app/Models/** #### **app\Models\**
Reine Datenobjekte, z.B.: Reine Datenobjekte, z.B.:
- `User.php` - `User.php`
- `ServerStatus.php` - `ServerStatus.php`
Hier werden keine Aktionen ausgeführt nur Struktur & Daten. Hier werden keine Aktionen ausgeführt nur Struktur & Daten.
#### **app/Helpers/** #### **app\Helpers\**
Werkzeuge für: Werkzeuge für:
- Validation - Validation
- kleine Utility-Funktionen - kleine Utility-Funktionen
@ -106,7 +106,7 @@ Werkzeuge für:
--- ---
### **config/** ### **config\**
Globale Einstellungen. Globale Einstellungen.
**config.example.php** **config.example.php**
@ -120,10 +120,10 @@ Globale Einstellungen.
--- ---
### **scripts/** ### **scripts\**
Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden. Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden.
#### **scripts/powershell/** #### **scripts\powershell\**
Hier liegen alle `.ps1` Dateien: Hier liegen alle `.ps1` Dateien:
- `New-AdUser.ps1` - `New-AdUser.ps1`
@ -135,15 +135,15 @@ Diese Skripte laufen auf dem Server **niemals im Webroot**.
--- ---
### **storage/** ### **storage\**
Dynamische Dateien, die während der Laufzeit entstehen. Dynamische Dateien, die während der Laufzeit entstehen.
#### **storage/logs/** #### **storage\logs\**
- PHP-Logs - PHP-Logs
- Fehlerprotokolle - Fehlerprotokolle
- Aktionen (z.B. wer welchen User angelegt hat) - Aktionen (z.B. wer welchen User angelegt hat)
#### **storage/uploads/** #### **storage\uploads\**
- hochgeladene CSV-Dateien für Massenimporte - hochgeladene CSV-Dateien für Massenimporte
- ggf. später Export-Dateien - ggf. später Export-Dateien
@ -152,7 +152,7 @@ Dieser Ordner wird **nie** versioniert und kommt in `.gitignore`.
--- ---
### **docs/** ### **docs\**
Projektdokumentation. Projektdokumentation.
Hier können alle Markdown-Dokumente rein: Hier können alle Markdown-Dokumente rein:
@ -174,11 +174,11 @@ Beschreibung des Projekts
### **.gitignore im Repository-Root** ### **.gitignore im Repository-Root**
Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt dafür, dass keine temporären oder sensiblen Daten versioniert werden: Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt dafür, dass keine temporären oder sensiblen Daten versioniert werden:
``` ```
/vendor/ \vendor\
/.idea/ \.idea\
/.vscode/ \.vscode\
/storage/ \storage\
/config.php \config.php
``` ```
--- ---
@ -188,20 +188,20 @@ Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt da
``` ```
C:\Web\AdAdminPanel C:\Web\AdAdminPanel
├── public\ # Webroot im IIS ├── public\ # Webroot im IIS
├── app ├── app\
├── config ├── config\
├── scripts ├── scripts\
│ └── powershell │ └── powershell\
├── storage ├── storage\
│ ├── logs │ ├── logs\
│ └── uploads │ └── uploads\
└── vendor └── vendor\
``` ```
### Wichtige Punkte: ### Wichtige Punkte:
- IIS zeigt **nur auf `public/`** - IIS zeigt **nur auf `public\`**
- `config/`, `scripts/`, `storage/` bleiben *unsichtbar* für den Browser - `config\`, `scripts\`, `storage\` bleiben *unsichtbar* für den Browser
- PowerShell läuft über einen eigenen Service-Account - PowerShell läuft über einen eigenen Service-Account
- AppPool-Identität erhält nur minimal benötigte Rechte - AppPool-Identität erhält nur minimal benötigte Rechte