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.*
@ -9,30 +9,30 @@ Dieses Dokument beschreibt die empfohlene Ordnerstruktur für das Gitea-Reposito
# 1. Ordnerstruktur im Gitea-Repository
```
ad-admin-panel/
├── public/
ad-admin-panel\
├── public\
│ ├── index.php
│ ├── css/
│ ├── js/
│ ├── images/
│ └── assets/
├── app/
│ ├── Controllers/
│ ├── Services/
│ │ ├── Ldap/
│ │ ├── Powershell/
│ │ └── Snmp/
│ ├── Models/
│ └── Helpers/
├── config/
│ ├── css\
│ ├── js\
│ ├── images\
│ └── assets\
├── app\
│ ├── Controllers\
│ ├── Services\
│ │ ├── Ldap\
│ │ ├── Powershell\
│ │ └── Snmp\
│ ├── Models\
│ └── Helpers\
├── config\
│ ├── config.example.php
│ └── config.php
├── scripts/
│ └── powershell/
├── storage/
│ ├── logs/
│ └── uploads/
├── docs/
├── scripts\
│ └── powershell\
├── storage\
│ ├── logs\
│ └── uploads\
├── docs\
│ ├── Architektur.md
│ ├── Deployment.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.
#### **app/Controllers/**
#### **app\Controllers\**
- Verarbeiten Requests aus dem Frontend
- Rufen passende Services auf
- Geben Views oder JSON zurück
Beispiel: `UserController.php` zeigt Benutzerliste an oder verarbeitet Formulare.
#### **app/Services/**
#### **app\Services\**
Hier steckt die "Fachlogik" des Projekts.
- keine HTML-Ausgabe
@ -77,28 +77,28 @@ Hier steckt die "Fachlogik" des Projekts.
Unterordner:
**Ldap/**
**Ldap\**
- LDAP-Verbindungen
- User anlegen/ändern/löschen
- Passwörter setzen
- Gruppen verwalten
**Powershell/**
**Powershell\**
- PHP-Wrapper für `.ps1`-Skripte
- Benutzerverwaltung per AD-Cmdlets
**Snmp/**
**Snmp\**
- SNMP-Status auslesen
- CPU/RAM/Platten/etc. abrufen
#### **app/Models/**
#### **app\Models\**
Reine Datenobjekte, z.B.:
- `User.php`
- `ServerStatus.php`
Hier werden keine Aktionen ausgeführt nur Struktur & Daten.
#### **app/Helpers/**
#### **app\Helpers\**
Werkzeuge für:
- Validation
- kleine Utility-Funktionen
@ -106,7 +106,7 @@ Werkzeuge für:
---
### **config/**
### **config\**
Globale Einstellungen.
**config.example.php**
@ -120,10 +120,10 @@ Globale Einstellungen.
---
### **scripts/**
### **scripts\**
Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden.
#### **scripts/powershell/**
#### **scripts\powershell\**
Hier liegen alle `.ps1` Dateien:
- `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.
#### **storage/logs/**
#### **storage\logs\**
- PHP-Logs
- Fehlerprotokolle
- Aktionen (z.B. wer welchen User angelegt hat)
#### **storage/uploads/**
#### **storage\uploads\**
- hochgeladene CSV-Dateien für Massenimporte
- ggf. später Export-Dateien
@ -152,7 +152,7 @@ Dieser Ordner wird **nie** versioniert und kommt in `.gitignore`.
---
### **docs/**
### **docs\**
Projektdokumentation.
Hier können alle Markdown-Dokumente rein:
@ -174,11 +174,11 @@ Beschreibung des Projekts
### **.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:
```
/vendor/
/.idea/
/.vscode/
/storage/
/config.php
\vendor\
\.idea\
\.vscode\
\storage\
\config.php
```
---
@ -188,20 +188,20 @@ Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt da
```
C:\Web\AdAdminPanel
├── public\ # Webroot im IIS
├── app
├── config
├── scripts
│ └── powershell
├── storage
│ ├── logs
│ └── uploads
└── vendor
├── app\
├── config\
├── scripts\
│ └── powershell\
├── storage\
│ ├── logs\
│ └── uploads\
└── vendor\
```
### Wichtige Punkte:
- IIS zeigt **nur auf `public/`**
- `config/`, `scripts/`, `storage/` bleiben *unsichtbar* für den Browser
- IIS zeigt **nur auf `public\`**
- `config\`, `scripts\`, `storage\` bleiben *unsichtbar* für den Browser
- PowerShell läuft über einen eigenen Service-Account
- AppPool-Identität erhält nur minimal benötigte Rechte