mirror of
https://github.com/donpat1to/Schichtenplaner.git
synced 2025-11-30 22:45:46 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 663eb61352 | |||
| 23f1dd7aa0 |
@@ -9,41 +9,42 @@ generate_secret() {
|
|||||||
tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' < /dev/urandom | head -c $length
|
tr -dc 'A-Za-z0-9!@#$%^&*()_+-=' < /dev/urandom | head -c $length
|
||||||
}
|
}
|
||||||
|
|
||||||
# Prüfe ob .env existiert, falls nicht erstelle sie
|
# Prüfe ob .env existiert
|
||||||
if [ ! -f /app/.env ]; then
|
if [ ! -f /app/.env ]; then
|
||||||
echo "📝 Erstelle .env Datei..."
|
echo "📝 Erstelle .env Datei..."
|
||||||
|
|
||||||
# Generiere automatisch ein sicheres JWT Secret falls nicht gesetzt
|
# Verwende vorhandenes JWT_SECRET oder generiere ein neues
|
||||||
if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-secret-key-please-change" ]; then
|
if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-secret-key-please-change" ]; then
|
||||||
export JWT_SECRET=$(generate_secret 64)
|
export JWT_SECRET=$(generate_secret 64)
|
||||||
echo "🔑 Automatisch generiertes JWT Secret wurde erstellt"
|
echo "🔑 Automatisch sicheres JWT Secret generiert"
|
||||||
|
else
|
||||||
|
echo "🔑 Verwende vorhandenes JWT Secret aus Umgebungsvariable"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Erstelle .env aus Template
|
# Erstelle .env aus Template mit envsubst
|
||||||
envsubst < /app/.env.template > /app/.env
|
envsubst < /app/.env.template > /app/.env
|
||||||
|
echo "✅ .env Datei erstellt"
|
||||||
|
|
||||||
# Logge die ersten Zeilen (ohne Secrets)
|
|
||||||
echo "✅ .env Datei erstellt mit folgenden Einstellungen:"
|
|
||||||
head -n 5 /app/.env
|
|
||||||
else
|
else
|
||||||
echo "ℹ️ .env Datei existiert bereits"
|
echo "ℹ️ .env Datei existiert bereits"
|
||||||
|
|
||||||
# Validiere bestehende .env Datei
|
# Wenn .env existiert, aber JWT_SECRET Umgebungsvariable gesetzt ist, aktualisiere sie
|
||||||
if ! grep -q "JWT_SECRET=" /app/.env; then
|
if [ -n "$JWT_SECRET" ] && [ "$JWT_SECRET" != "your-secret-key-please-change" ]; then
|
||||||
echo "❌ Fehler: JWT_SECRET nicht in .env gefunden"
|
echo "🔑 Aktualisiere JWT Secret in .env Datei"
|
||||||
exit 1
|
# Aktualisiere nur das JWT_SECRET in der .env Datei
|
||||||
|
sed -i "s/^JWT_SECRET=.*/JWT_SECRET=$JWT_SECRET/" /app/.env
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sicherheitsüberprüfungen
|
# Validiere dass JWT_SECERT nicht der Standardwert ist
|
||||||
if grep -q "your-secret-key" /app/.env; then
|
if grep -q "JWT_SECRET=your-secret-key-please-change" /app/.env; then
|
||||||
echo "❌ FEHLER: Standard JWT Secret in .env gefunden - bitte ändern!"
|
echo "❌ FEHLER: Standard JWT Secret in .env gefunden!"
|
||||||
|
echo "❌ Bitte setzen Sie JWT_SECRET Umgebungsvariable"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setze sichere Berechtigungen
|
# Setze sichere Berechtigungen
|
||||||
chmod 600 /app/.env
|
chmod 600 /app/.env
|
||||||
chown -R schichtplaner:nodejs /app
|
|
||||||
|
|
||||||
echo "🔧 Starte Anwendung..."
|
echo "🔧 Starte Anwendung..."
|
||||||
exec "$@"
|
exec "$@"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// frontend/src/pages/Features/Features.tsx
|
// frontend/src/components/Layou/FooterLinks/Features/Features.tsx
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
const Features: React.FC = () => {
|
const Features: React.FC = () => {
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
|
|
||||||
.createButton {
|
.createButton {
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
background-color: #2ecc71;
|
background-color: #51258f;
|
||||||
color: white;
|
color: white;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.createButton:hover {
|
.createButton:hover {
|
||||||
background-color: #27ae60;
|
background-color: #51258f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.createButton:disabled {
|
.createButton:disabled {
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ export default defineConfig(({ mode }) => {
|
|||||||
sourcemap: isDevelopment ? 'inline' : false,
|
sourcemap: isDevelopment ? 'inline' : false,
|
||||||
// Generate deterministic hashes for better caching and security
|
// Generate deterministic hashes for better caching and security
|
||||||
assetsDir: 'assets',
|
assetsDir: 'assets',
|
||||||
|
base: mode === 'production' ? '/' : '/',
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
output: {
|
output: {
|
||||||
// Security: Use content hashes for cache busting and integrity
|
// Security: Use content hashes for cache busting and integrity
|
||||||
|
|||||||
Reference in New Issue
Block a user