Features: - Auth mit JWT + Argon2 (Login, Register, Refresh) - Rollen-System (Chef/Disponent/Mitarbeiter) - User Management mit Berechtigungen - Aufträge mit Zuweisungen - Verfügbarkeitsplanung - Stundenzettel mit Foto-Upload Support - Modulares System mit Config - Entwickler-Panel Endpoints Tech: - Deno + Oak - PostgreSQL - CORS enabled
134 lines
3.5 KiB
Markdown
134 lines
3.5 KiB
Markdown
# SeCu Backend
|
|
|
|
Deno + Oak Backend für die SeCu Mitarbeiterverwaltung.
|
|
|
|
## Tech Stack
|
|
|
|
- **Runtime:** Deno
|
|
- **Framework:** Oak
|
|
- **Database:** PostgreSQL
|
|
- **Auth:** JWT + Argon2
|
|
|
|
## Setup
|
|
|
|
### 1. Datenbank einrichten
|
|
|
|
```bash
|
|
# PostgreSQL Container starten
|
|
docker run -d \
|
|
--name secu-db \
|
|
-e POSTGRES_USER=secu \
|
|
-e POSTGRES_PASSWORD=SeCu2026!SecureDB \
|
|
-e POSTGRES_DB=secu \
|
|
-p 5434:5432 \
|
|
postgres:16
|
|
|
|
# Migrations ausführen
|
|
psql -h localhost -p 5434 -U secu -d secu -f ../secu/db/migrations/001_initial_schema.sql
|
|
psql -h localhost -p 5434 -U secu -d secu -f ../secu/db/migrations/002_seed_modules.sql
|
|
```
|
|
|
|
### 2. Environment
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# JWT_SECRET ändern!
|
|
```
|
|
|
|
### 3. Starten
|
|
|
|
```bash
|
|
# Development (mit Watch)
|
|
deno task dev
|
|
|
|
# Production
|
|
deno task start
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Auth (`/api/auth`)
|
|
|
|
| Method | Endpoint | Beschreibung |
|
|
|--------|----------|--------------|
|
|
| POST | /register | Registrierung (erster User = Chef) |
|
|
| POST | /login | Login |
|
|
| POST | /refresh | Token erneuern |
|
|
| POST | /logout | Logout |
|
|
| GET | /me | Aktueller User |
|
|
| POST | /change-password | Passwort ändern |
|
|
|
|
### Users (`/api/users`)
|
|
|
|
| Method | Endpoint | Beschreibung | Rolle |
|
|
|--------|----------|--------------|-------|
|
|
| GET | / | Alle User | Chef: alle, Disponent: eigene MA |
|
|
| GET | /:id | User Details | - |
|
|
| POST | / | User anlegen | Chef/Disponent |
|
|
| PUT | /:id | User bearbeiten | - |
|
|
| DELETE | /:id | User deaktivieren | Chef/Disponent |
|
|
|
|
### Orders (`/api/orders`)
|
|
|
|
| Method | Endpoint | Beschreibung | Rolle |
|
|
|--------|----------|--------------|-------|
|
|
| GET | / | Alle Aufträge | MA: nur zugewiesene |
|
|
| GET | /:id | Auftrag Details | - |
|
|
| POST | / | Auftrag erstellen | Chef/Disponent |
|
|
| PUT | /:id | Auftrag bearbeiten | Chef/Disponent |
|
|
| DELETE | /:id | Auftrag löschen | Chef/Disponent |
|
|
| POST | /:id/assign | MA zuweisen | Chef/Disponent |
|
|
| DELETE | /:id/assign/:userId | Zuweisung entfernen | Chef/Disponent |
|
|
| PUT | /:id/assignment | Bestätigen/Ablehnen | MA |
|
|
|
|
### Availability (`/api/availability`)
|
|
|
|
| Method | Endpoint | Beschreibung |
|
|
|--------|----------|--------------|
|
|
| GET | / | Verfügbarkeiten |
|
|
| GET | /calendar | Kalender-Übersicht |
|
|
| POST | / | Verfügbarkeit melden |
|
|
| POST | /bulk | Mehrere Tage |
|
|
| DELETE | /:id | Eintrag löschen |
|
|
|
|
### Timesheets (`/api/timesheets`)
|
|
|
|
| Method | Endpoint | Beschreibung | Rolle |
|
|
|--------|----------|--------------|-------|
|
|
| GET | / | Stundenzettel | MA: nur eigene |
|
|
| GET | /:id | Details | - |
|
|
| POST | / | Einreichen | Alle |
|
|
| PUT | /:id | Bearbeiten | Nur pending + eigene |
|
|
| POST | /:id/review | Genehmigen/Ablehnen | Chef/Disponent |
|
|
| DELETE | /:id | Löschen | - |
|
|
| GET | /summary/:userId | Zusammenfassung | Chef/Disponent |
|
|
| POST | /upload | Foto hochladen | Alle |
|
|
|
|
### Modules (`/api/modules`)
|
|
|
|
| Method | Endpoint | Beschreibung | Rolle |
|
|
|--------|----------|--------------|-------|
|
|
| GET | / | Alle Module | Alle |
|
|
| GET | /org | Org-Konfiguration | Alle |
|
|
| POST | /:id/toggle | Ein/Ausschalten | Chef |
|
|
| PUT | /:id/config | Konfigurieren | Chef |
|
|
| GET | /check/:name | Status prüfen | Alle |
|
|
| GET | /developer/status | System-Status | Chef + Dev-Modul |
|
|
| GET | /developer/logs | Audit-Logs | Chef + Dev-Modul |
|
|
|
|
## Rollen
|
|
|
|
| Rolle | Kürzel | Berechtigungen |
|
|
|-------|--------|----------------|
|
|
| Chef | `chef` | Vollzugriff |
|
|
| Disponent | `disponent` | MA verwalten, Aufträge, Stundenzettel |
|
|
| Mitarbeiter | `mitarbeiter` | Eigene Aufträge/Verfügbarkeit/Stundenzettel |
|
|
|
|
## Port
|
|
|
|
Standard: `8004`
|
|
|
|
---
|
|
|
|
*SeCu Backend v1.0.0*
|