Übersicht der Inhalt

Fett markierte Verzeichnisse und deren Inhalt sind von besonderem Interesse

  • api
    • docs
      • API Dokumentation (openAPI 3.0)
    • Login
      • /api/login Endpunkt Klasse Login.php
    • Logout
      • /api/login Endpunkt Klasse Logout.php
    • Posts
      • /api/posts Endpunkt Klasse Posts.php
      • /api/posts/{id} Endpunkt Klasse Posts.php
    • Refresh
      • /api/refresh Endpunkt Klasse Refresh.php
    • Register
      • /api/register Endpunkt Klasse Register.php
    • Users
      • /users Endpunkt Klasse Users.php
      • /users/{id} Endpunkt Klasse Users.php
      • Image
        • /users{id}/image Endpunkt Klasse Image.php
      • Posts
        • /users{id}/posts Endpunkt Klasse Posts.php
    • 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