144 lines
4.6 KiB
Markdown
144 lines
4.6 KiB
Markdown
# Übersicht der Inhalt
|
|
|
|
### Fett markierte Verzeichnisse und deren Inhalt sind von besonderem Interesse
|
|
|
|
- **api**
|
|
- docs
|
|
- API Dokumentation (openAPI 3.0)
|
|
- Login
|
|
- `Login.php` Endpunkt Klasse für `api/api/login`
|
|
- Logout
|
|
- `Logout.php` Endpunkt Klasse für `api/api/login`
|
|
- Posts
|
|
- `Posts.php` Endpunkt Klasse für `api/api/posts`
|
|
- `Posts.php` Endpunkt Klasse für `api/api/posts/{id}`
|
|
- Refresh
|
|
- `Refresh.php` Endpunkt Klasse für `api/api/refresh`
|
|
- Register
|
|
- `Register.php` Endpunkt Klasse für `api/api/register`
|
|
- Users
|
|
- `Users.php` Endpunkt Klasse für `api/users`
|
|
- `Users.php` Endpunkt Klasse für `api/users/{id}`
|
|
- Image
|
|
- `Image.php` Endpunkt Klasse für `api/users{id}/image`
|
|
- Permissions
|
|
- `Permissions.php` Endpunkt Klasse für `api/users/{id}/permissions`
|
|
- Posts
|
|
- `Posts.php` Endpunkt Klasse für `api/users{id}/posts`
|
|
- `index.php`
|
|
- API Einstiegspunkt
|
|
- **classes**
|
|
- Api
|
|
- `Api.php`: Basisklasse für Endpunkte
|
|
- ApiError
|
|
- `ApiError.php`: Facade für Fehler die das Api zurück gibt
|
|
- Auth
|
|
- `AdminAuth.php`: Middleware für Authentifizierung zuzüglich Admin Rechte
|
|
- `Auth.php`: Middleware für Authentifizierung
|
|
- `OptAuth.php`: Middleware für optionale Authentifizierung
|
|
- Config
|
|
- `Config.php`: Singleton für Applikationskonfiguration
|
|
- Database
|
|
- `Database.php`: Singleton für Datenbankzugriffe (Wrapper um PDO)
|
|
- GUID
|
|
- `GUID.php`: Facade für GUID Algorithmen
|
|
- Input
|
|
- `Input.php`: Facade die SimpleRouters `Input` Klasse wrapped für
|
|
einfacheren Zugriff auf häufig verwendete Methoden
|
|
- Models
|
|
- Post
|
|
- `Post.php`: Modellklasse für Posts. Abstrahiert und kapselt
|
|
Datenbankzugriffe
|
|
- User
|
|
- `User.php`: Modellklasse für User. Abstrahiert und kapselt
|
|
Datenbankzugriffe
|
|
- Request
|
|
- `Request.php`: Facade die SimpleRouters `Request` Klasse wrapped für
|
|
einfacheren Zugriff auf häufig verwendete Methoden
|
|
- Response
|
|
- `Response.php`: Facade die SimpleRouters `Response` Klasse wrapped für
|
|
einfacheren Zugriff auf häufig verwendete Methoden
|
|
- **config**
|
|
- `app.php`: Applikationskonfiguration
|
|
- `database.php`: Datenbankverbindungsdaten
|
|
- dist
|
|
- React Buildartefakte.
|
|
- react
|
|
- React Projekt
|
|
- **routes**
|
|
- `routes.php`: SimpleRouter Routenkonfiguration für die Applikation
|
|
- storage:
|
|
- Speicherort für Profilbilder
|
|
- **utils**:
|
|
- `helpers.php`: Kleine Helferlein
|
|
- vendor:
|
|
- Verzeichnis für Composer Pakete
|
|
|
|
# Autoloader
|
|
|
|
Verwendet wird hier der Composer Autoloader. Konfiguriert werden dessen
|
|
Namespaces in der `composer.json`. Durch `composer dump-autoload` wird
|
|
der Autoloader aktualisiert sollten neue Namespaces hinzugefügt werden.
|
|
|
|
# Voraussetzungen um das React Projekt zu bauen
|
|
- Node 18
|
|
- PNPM
|
|
|
|
# Veränderungen Datenbank
|
|
|
|
## Tabelle `egb_benutzer`
|
|
- Neue Spalten `token` (Auth token): VarChar(36), Nullable, UNIQUE Constraint
|
|
- Neue Spalten `tokenExpiry` (Auth token verfall): DateTime, Nullable
|
|
- Neue Spalten `refreshToken` (Auth refresh token): VarChar(36), Nullable, UNIQUE Constraint
|
|
- Neue Spalten `refreshExpiry` (Auth refresh token verfall): VarChar(36), DateTime
|
|
- Abänderung der Spalte `zeitstempel`: Entfernen des `ON UPDATE` (da sonst die Mitgliedszeit beim Ändern der Daten sich ändert)
|
|
- Abänderung der Spalte `benutzername`: Non-Nullable gemacht, UNIQUE Constraint
|
|
- Abänderung der Spalte `email`: Non-Nullable gemacht, UNIQUE Constraint
|
|
- Abänderung der Spalte `passwort`: Non-Nullable gemacht
|
|
- Abänderung der Spalte `confirmationcode`: Default auf `NULL` gesetzt
|
|
|
|
## Tabelle `egb_gaestebuch`
|
|
- Abänderung der Spalte `benutzer_id`: Non-Nullable gemacht
|
|
- Abänderung der Spalte `beitrag`: Non-Nullable gemacht
|
|
- Hinzufüge eines Foreign Key Constraints auf `benutzer_id` mit CASCADE (Löschen des Users löscht Beiträge)
|
|
|
|
# Notwendige Anpassung für die Verzeichnisstruktur eines anderen Hosters
|
|
|
|
## HTACCESS
|
|
|
|
### `.htaccess`
|
|
- RewriteBase anpassen
|
|
|
|
### `react/public/.htaccess`
|
|
- RewriteBase anpassen
|
|
- **WICHTIG:** React Projekt neu bauen damit die Datei an den korrekten Platz kopiert wird
|
|
|
|
## PHP
|
|
|
|
### `classes/Models/User.php`
|
|
- Link in der Confirmation E-Mail
|
|
|
|
### `config/app.php`
|
|
- Alle Pfade
|
|
|
|
## JS
|
|
**WICHTIG:** Nach allen Änderungen muss das React Projekt neu gebaut werden
|
|
|
|
### `react/vite.config.ts`
|
|
- `base` Pfad
|
|
|
|
### `react/src/i18n.ts`
|
|
- `loadPath` Pfad
|
|
|
|
### `react/src/main.tsx`
|
|
- `createRouter.basepath` Pfad
|
|
|
|
### `react/src/api/Api.ts`
|
|
- `BASE` API Url
|
|
|
|
### Projekt bauen
|
|
```
|
|
cd react
|
|
pnpm install
|
|
pnpm build
|
|
``` |