add: full multi-tenancy control

This commit is contained in:
Cauê Faleiros
2026-02-02 15:31:15 -03:00
commit c6ec92802b
1711 changed files with 258106 additions and 0 deletions

105
docker-entrypoint.sh Normal file
View File

@@ -0,0 +1,105 @@
#!/bin/bash
set -e
echo "🚀 Iniciando Container v21 (Smart Seed + Key Fix)..."
# 1. PERMISSÕES
mkdir -p storage/framework/sessions
mkdir -p storage/framework/views
mkdir -p storage/framework/cache
mkdir -p bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage
# 2. AGUARDAR BANCO
DB_HOST=${DB_HOST:-mysql}
DB_PORT=${DB_PORT:-3306}
echo "⏳ Aguardando Banco ($DB_HOST:$DB_PORT)..."
while ! nc -z $DB_HOST $DB_PORT; do
echo "zzZ... Banco indisponível. Tentando em 3s..."
sleep 3
done
echo "✅ Banco OK!"
# 3. PREPARAR .ENV E KEY
if [ ! -f .env ]; then
echo "⚠️ .env não encontrado. Criando a partir do exemplo..."
cp .env.example .env
echo "🔑 Gerando APP_KEY pela primeira vez..."
php artisan key:generate --force
fi
# Verificação de Segurança da Key
if grep -q "APP_KEY=$" .env || grep -q "APP_KEY=\s*$" .env; then
echo "⚠️ APP_KEY encontrada vazia! Gerando nova chave..."
php artisan key:generate --force
fi
# 4. CONFIGURAÇÃO DINÂMICA
echo "🇧🇷 Aplicando Configurações..."
# URL
if [ ! -z "$APP_URL" ]; then
sed -i '/APP_URL=/d' .env
echo "APP_URL=$APP_URL" >> .env
fi
# Locale e Timezone
sed -i 's/APP_LOCALE=en/APP_LOCALE=pt_BR/g' .env
sed -i 's/APP_CURRENCY=USD/APP_CURRENCY=BRL/g' .env
sed -i 's/APP_TIMEZONE=UTC/APP_TIMEZONE=America\/Sao_Paulo/g' .env
sed -i 's/APP_TIMEZONE=Asia\/Kolkata/APP_TIMEZONE=America\/Sao_Paulo/g' .env
# Infra
sed -i 's/DB_HOST=127.0.0.1/DB_HOST=mysql/g' .env
sed -i 's/REDIS_HOST=127.0.0.1/REDIS_HOST=redis/g' .env
sed -i 's/MEMCACHED_HOST=127.0.0.1/MEMCACHED_HOST=memcached/g' .env
# Segurança Session
sed -i '/SESSION_SECURE_COOKIE/d' .env
sed -i '/SESSION_SAME_SITE/d' .env
if [ "$APP_ENV" = "local" ]; then
echo "SESSION_SECURE_COOKIE=false" >> .env
else
echo "SESSION_SECURE_COOKIE=true" >> .env
fi
echo "SESSION_SAME_SITE=lax" >> .env
echo "SESSION_COOKIE=growup_session" >> .env
echo "SESSION_DOMAIN=" >> .env
# 5. LIMPEZA DE CACHE
echo "🔥 Limpando caches..."
rm -f bootstrap/cache/config.php
rm -f bootstrap/cache/packages.php
rm -f bootstrap/cache/services.php
php artisan optimize:clear
# 6. BANCO E SEED INTELIGENTE (A MUDANÇA ESTÁ AQUI)
echo "📦 Verificando Banco de Dados..."
php artisan migrate --force
echo "🧐 Verificando existência de usuários..."
# Executa um script PHP rápido para contar usuários na tabela real
USER_COUNT=$(php -r "require __DIR__ . '/vendor/autoload.php'; \$app = require_once __DIR__ . '/bootstrap/app.php'; \$kernel = \$app->make(Illuminate\Contracts\Console\Kernel::class); \$kernel->bootstrap(); try { echo \Illuminate\Support\Facades\DB::table('users')->count(); } catch (\Exception \$e) { echo 0; }")
echo "📊 Usuários encontrados: $USER_COUNT"
if [ "$USER_COUNT" -eq "0" ]; then
echo "🌱 Tabela de usuários vazia. Rodando SEED OBRIGATÓRIO..."
php artisan db:seed --force
echo "✅ Seed concluído! Usuário padrão criado."
else
echo "⏩ Já existem usuários no banco ($USER_COUNT). Pulando Seed para evitar duplicidade."
fi
# 7. OTIMIZAÇÃO FINAL
echo "⚡ Otimizando..."
php artisan optimize
php artisan view:cache
php artisan route:cache
echo "🏁 Iniciando Apache..."
exec apache2-foreground