diff --git a/docker-compose.yml b/docker-compose.yml index 2008f850..e7d074ad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,9 @@ services: - worklenz backend: - image: docker.io/chamikajaycey/worklenz-backend:latest + build: + context: ./worklenz-backend + dockerfile: Dockerfile container_name: worklenz_backend ports: - "3000:3000" @@ -51,28 +53,25 @@ services: depends_on: - minio entrypoint: > - /bin/sh -c " - # Wait for MinIO to be available - echo 'Waiting for MinIO to start...' - sleep 15; - # Retry up to 5 times - for i in 1 2 3 4 5; do - echo \"Attempt $$i to connect to MinIO...\" - if /usr/bin/mc config host add myminio http://minio:9000 minioadmin minioadmin; then - echo \"Successfully connected to MinIO!\" - /usr/bin/mc mb --ignore-existing myminio/worklenz-bucket; - /usr/bin/mc policy set public myminio/worklenz-bucket; - exit 0; - fi - echo \"Connection failed, retrying in 5 seconds...\" - sleep 5; - done - echo \"Failed to connect to MinIO after 5 attempts\" - exit 1; - " + /bin/sh -c ' + echo "Waiting for MinIO to start..."; + sleep 15; + for i in 1 2 3 4 5; do + echo "Attempt $i to connect to MinIO..."; + if /usr/bin/mc config host add myminio http://minio:9000 minioadmin minioadmin; then + echo "Successfully connected to MinIO!"; + /usr/bin/mc mb --ignore-existing myminio/worklenz-bucket; + /usr/bin/mc policy set public myminio/worklenz-bucket; + exit 0; + fi + echo "Connection failed, retrying in 5 seconds..."; + sleep 5; + done; + echo "Failed to connect to MinIO after 5 attempts"; + exit 1; + ' networks: - worklenz - db: image: postgres:15 container_name: worklenz_db @@ -94,22 +93,19 @@ services: target: /docker-entrypoint-initdb.d consistency: cached command: > - bash -c ' - if command -v apt-get >/dev/null 2>&1; then + bash -c ' if command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y dos2unix elif command -v apk >/dev/null 2>&1; then apk add --no-cache dos2unix - fi && - find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c '\'' + fi && find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c '\'' dos2unix "{}" 2>/dev/null || true chmod +x "{}" - '\'' \; && - exec docker-entrypoint.sh postgres - ' + '\'' \; && exec docker-entrypoint.sh postgres ' volumes: worklenz_postgres_data: worklenz_minio_data: + networks: worklenz: diff --git a/update-docker-env.sh b/update-docker-env.sh index bfcca1ae..77ab1beb 100755 --- a/update-docker-env.sh +++ b/update-docker-env.sh @@ -80,6 +80,14 @@ COOKIE_SECRET=change_me_in_production SOCKET_IO_CORS=${FRONTEND_URL} SERVER_CORS=${FRONTEND_URL} + +# Google Login +GOOGLE_CLIENT_ID="your_google_client_id" +GOOGLE_CLIENT_SECRET="your_google_client_secret" +GOOGLE_CALLBACK_URL="${FRONTEND_URL}/secure/google/verify" +LOGIN_FAILURE_REDIRECT="${FRONTEND_URL}/auth/authenticating" +LOGIN_SUCCESS_REDIRECT="${FRONTEND_URL}/auth/authenticating" + # Database DB_HOST=db DB_PORT=5432 diff --git a/worklenz-frontend/index.html b/worklenz-frontend/index.html index 7f1e3d71..0435deeb 100644 --- a/worklenz-frontend/index.html +++ b/worklenz-frontend/index.html @@ -13,7 +13,7 @@ /> Worklenz - + diff --git a/worklenz-frontend/public/unregister-sw.js b/worklenz-frontend/public/unregister-sw.js index b5978d50..02c9bc86 100644 --- a/worklenz-frontend/public/unregister-sw.js +++ b/worklenz-frontend/public/unregister-sw.js @@ -2,13 +2,18 @@ if ('serviceWorker' in navigator) { // Check if we've already attempted to unregister in this session if (!sessionStorage.getItem('swUnregisterAttempted')) { navigator.serviceWorker.getRegistrations().then(function(registrations) { - if (registrations.length > 0) { + const ngswWorker = registrations.find(reg => reg.active?.scriptURL.includes('ngsw-worker')); + + if (ngswWorker) { // Mark that we've attempted to unregister sessionStorage.setItem('swUnregisterAttempted', 'true'); - // If there are registered service workers, do a hard reload first - window.location.reload(true); + // Unregister the ngsw-worker + ngswWorker.unregister().then(() => { + // Reload the page after unregistering + window.location.reload(true); + }); } else { - // If no service workers are registered, unregister any that might be pending + // If no ngsw-worker is found, unregister any other service workers for(let registration of registrations) { registration.unregister(); } diff --git a/worklenz-frontend/src/pages/auth/login-page.tsx b/worklenz-frontend/src/pages/auth/login-page.tsx index 097e4e65..7e16f1a5 100644 --- a/worklenz-frontend/src/pages/auth/login-page.tsx +++ b/worklenz-frontend/src/pages/auth/login-page.tsx @@ -77,6 +77,18 @@ const LoginPage: React.FC = () => { }; useEffect(() => { + // Check and unregister ngsw-worker if present + if ('serviceWorker' in navigator) { + navigator.serviceWorker.getRegistrations().then(function(registrations) { + const ngswWorker = registrations.find(reg => reg.active?.scriptURL.includes('ngsw-worker')); + if (ngswWorker) { + ngswWorker.unregister().then(() => { + window.location.reload(); + }); + } + }); + } + trackMixpanelEvent(evt_login_page_visit); if (currentSession && !currentSession?.setup_completed) { navigate('/worklenz/setup');