From f5fbb40617ad23da08da621d55991314add7cfc2 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Sat, 13 Apr 2024 02:07:59 +0300 Subject: [PATCH 01/55] commands moved around --- .env | 5 +++-- _deploy/entrypoint.sh | 6 ++++-- package.json | 4 ++-- pages/api/auth/[...nextauth].ts | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.env b/.env index f4b7091..e00cfb0 100644 --- a/.env +++ b/.env @@ -18,16 +18,17 @@ AZURE_AD_CLIENT_ID=9e13bedd-1f9d-4c23-910e-a806aba308b6 # Application (client) I AZURE_AD_CLIENT_SECRET=5ic8Q~GQmW-IUhuxzVGx3BE-i30GXDSpjfMHcb~z #client secret value AZURE_AD_TENANT_ID=f69d1a93-bfba-498a-9b60-e87c1bc26276 +# First APPLE_SECRET=eyJhbGciOiJFUzI1NiIsImtpZCI6IlRCM1YzNTVHNVkifQ.eyJhdWQiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiaXNzIjoiWEM1N1A5U1hESyIsImlhdCI6MTcxMjE3ODM0MiwiZXhwIjoxNzI3NzMwMzQzLCJzdWIiOiJjb20ubXdoaXRuZXNzaW5nLnNvZmlhIn0.XceA0qUQi0tXg0GM_LkJkpNU5AqXLiSB2JlEVbHCB_nINbQTWkjtoWxfqmvdOkIzwKtvdQ8FFb-crK9no9Bbbw APPLE_ID=com.mwhitnessing.sofia -APPLE_SECRET=eyJhbGciOiJFUzI1NiIsImtpZCI6IlRCM1YzNTVHNVkifQ.eyJhdWQiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiaXNzIjoiWEM1N1A5U1hESyIsImlhdCI6MTcxMjY5NzM5NywiZXhwIjoxNzI4MjQ5Mzk4LCJzdWIiOiJYQzU3UDlTWERLLmNvbS5td2hpdG5lc3Npbmcuc29maWEifQ.QDX9eoRWAKMd10iRMW9Od88-0H_oZ_B6sPG61fw-zjHbNOvlHG3ddfxY1AqfdSMvLrXg1URKM1lnxOB-OCxg4A +APPLE_SECRET=eyJhbGciOiJFUzI1NiIsImtpZCI6IlRCM1YzNTVHNVkifQ.eyJhdWQiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiaXNzIjoiWEM1N1A5U1hESyIsImlhdCI6MTcxMjk0NTIyNiwiZXhwIjoxNzI4NDk3MjI3LCJzdWIiOiJjb20ubXdoaXRuZXNzaW5nLnNvZmlhIn0.PjViYOi015eLffx_p38q0F9Yc3y8Y6XUpTRaFSFVfYp11dDWudA6ZTq3KoJzn9eEinQWV67HjllAeeADNbJ-2Q + # with team in the ID? #APPLE_ID=XC57P9SXDK.com.mwhitnessing.sofia #APPLE_SECRET=eyJhbGciOiJFUzI1NiIsImtpZCI6IlRCM1YzNTVHNVkifQ.eyJhdWQiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiaXNzIjoiWEM1N1A5U1hESyIsImlhdCI6MTcxMjE3ODM0MiwiZXhwIjoxNzI3NzMwMzQzLCJzdWIiOiJjb20ubXdoaXRuZXNzaW5nLnNvZmlhIn0.XceA0qUQi0tXg0GM_LkJkpNU5AqXLiSB2JlEVbHCB_nINbQTWkjtoWxfqmvdOkIzwKtvdQ8FFb-crK9no9Bbbw # to generate APPLE_TEAM_ID=XC57P9SXDK APPLE_KEY_ID=TB3V355G5Y -APPLE_PRIVATE_KEY= AUTH0_ID=Aa9f3HJowauUrmBVY4iQzQJ7fYsaZDbK diff --git a/_deploy/entrypoint.sh b/_deploy/entrypoint.sh index f0ea095..db16b09 100644 --- a/_deploy/entrypoint.sh +++ b/_deploy/entrypoint.sh @@ -27,13 +27,15 @@ if [ "$UPDATE_CODE_FROM_GIT" = "true" ]; then rsync -av /tmp/clone/package.json /app/package.json || echo "Rsync failed: Issue copying package.json" rsync -av /tmp/clone/package-lock.json /app/package-lock.json || echo "Rsync failed: Issue copying package-lock.json" rm -rf /app/node_modules - cd /app - npm install --no-audit --no-fund --no-optional --omit=optional yes | npx prisma generate else echo "Package files have not changed. Skipping package installation." fi + cd /app + npm install --no-audit --no-fund --no-optional --omit=optional + npx next build + # Clean up rm -rf /tmp/clone echo "Update process completed." diff --git a/package.json b/package.json index 8f7bdbe..d602472 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "debug": "node server.js", "debug-env": "dotenv -e .env.$APP_ENV -- nodemon --inspect server.js", "nodeenv": "dotenv -e .env.$APP_ENV -- node server.js", - "prod": "npx next build && dotenv -e .env.production -- node server.js", + "prod": "dotenv -e .env.production -- node server.js", "build": "next build", "buildWin": "npm run build", "start": "next start", @@ -113,4 +113,4 @@ "depcheck": "^1.4.7", "prisma": "^5.12.1" } -} +} \ No newline at end of file diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts index 67b434f..9104b3d 100644 --- a/pages/api/auth/[...nextauth].ts +++ b/pages/api/auth/[...nextauth].ts @@ -18,6 +18,7 @@ const common = require("../../../src/helpers/common"); import { isLoggedIn, setAuthTokens, clearAuthTokens, getAccessToken, getRefreshToken } from 'axios-jwt' +console.log("appleID:", process.env.APPLE_ID); // console.log(process.env.EMAIL_SERVER) // For more information on each option (and a full list of options) go to // https://next-auth.js.org/configuration/options From cb2ed5aa4d1fce55f1ad478110f4db6258464fff Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Sat, 13 Apr 2024 02:08:31 +0300 Subject: [PATCH 02/55] implement and use MAILERSEND as email provider --- .env | 6 ++++++ src/helpers/email.js | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.env b/.env index e00cfb0..decd9d0 100644 --- a/.env +++ b/.env @@ -55,6 +55,12 @@ MAILTRAP_HOST=sandbox.smtp.mailtrap.io MAILTRAP_USER=8ec69527ff2104 MAILTRAP_PASS=c7bc05f171c96c +MAILERSEND_TOKEN=mlsn.27d1a8120e120e147e1bb9c6345739faf3a03688bd9bf1b34f797d08b0f9fc26 +MAILERSEND_SERVER=smtp.mailersend.net +MAILERSEND_PORT=587 +MAILERSEND_USER=MS_bL93ka@mwitnessing.com +MAILERSEND_PASS=v23Z2XrDSNjHJxgo + GMAIL_EMAIL_USERNAME= GMAIL_EMAIL_APP_PASS= diff --git a/src/helpers/email.js b/src/helpers/email.js index dbac631..1e0f2a1 100644 --- a/src/helpers/email.js +++ b/src/helpers/email.js @@ -27,11 +27,11 @@ let mailtrapTestClient = null; //test var transporter = nodemailer.createTransport({ - host: process.env.MAILTRAP_HOST || "sandbox.smtp.mailtrap.io", - port: 2525, + host: process.env.MAILERSEND_SERVER, + port: process.env.MAILERSEND_PORT, auth: { - user: process.env.MAILTRAP_USER, - pass: process.env.MAILTRAP_PASS + user: process.env.MAILERSEND_USER, + pass: process.env.MAILERSEND_PASS } }); // production From 717cd8499d81521ef8d4bcba6a9534c137934c1d Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Sat, 13 Apr 2024 12:40:20 +0300 Subject: [PATCH 03/55] ry fix pwa auth error locally --- worker/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/worker/index.js b/worker/index.js index 5caa928..751e25e 100644 --- a/worker/index.js +++ b/worker/index.js @@ -2,6 +2,19 @@ console.log('Service Worker Loaded...') +self.addEventListener('fetch', (event) => { + try { + if (event.request.url.includes('/api/auth/callback/')) { + // Use network only strategy for auth routes, or bypass SW completely + event.respondWith(fetch(event.request)); + return; + } + // other caching strategies... + } catch (error) { + console.error(error) + } +}); + self.addEventListener('push', function (event) { console.log('Push message', event) if (!(self.Notification && self.Notification.permission === 'granted')) { From 471cbc0a55389c44c24ae7c9a59f3897d1bff0d4 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Sat, 13 Apr 2024 13:04:02 +0300 Subject: [PATCH 04/55] log in as other user --- .env.test | 13 --------- components/location/LocationForm.js | 2 +- components/publisher/PublisherCard.js | 22 +++++++++++++++ pages/api/auth/[...nextauth].ts | 4 +-- pages/api/auth/login-as.js | 40 +++++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 pages/api/auth/login-as.js diff --git a/.env.test b/.env.test index 6a513e6..52a165f 100644 --- a/.env.test +++ b/.env.test @@ -10,26 +10,13 @@ NEXTAUTH_SECRET=1dd8a5457970d1dda50600be28e935ecc4513ff27c49c431849e6746f158d638 # ? do we need to duplicate this? already defined in the deoployment yml file DATABASE=mysql://jwpwsofia_demo:dwxhns9p9vp248@mariadb:3306/jwpwsofia_demo -APPLE_ID= -APPLE_TEAM_ID= -APPLE_PRIVATE_KEY= -APPLE_KEY_ID= - AUTH0_ID=Aa9f3HJowauUrmBVY4iQzQJ7fYsaZDbK AUTH0_SECRET=_c0O9GkyRXkoWMQW7jNExnl6UoXN6O4oD3mg7NZ_uHVeAinCUtcTAkeQmcKXpZ4x AUTH0_ISSUER=https://dev-wkzi658ckibr1amv.us.auth0.com -FACEBOOK_ID= -FACEBOOK_SECRET= - -GITHUB_ID= -GITHUB_SECRET= # GOOGLE_ID=926212607479-d3m8hm8f8esp3rf1639prskn445sa01v.apps.googleusercontent.com # GOOGLE_SECRET=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 -TWITTER_ID= -TWITTER_SECRET= - MAILTRAP_HOST_BULK=bulk.smtp.mailtrap.io MAILTRAP_HOST=live.smtp.mailtrap.io MAILTRAP_USER=api diff --git a/components/location/LocationForm.js b/components/location/LocationForm.js index 4f58fdb..be36371 100644 --- a/components/location/LocationForm.js +++ b/components/location/LocationForm.js @@ -7,7 +7,7 @@ import DayOfWeek from "../DayOfWeek"; import TextEditor from "../TextEditor"; import FileUploadWithPreview from 'components/FileUploadWithPreview '; -import ProtectedRoute, { serverSideAuth } from "../..//components/protectedRoute"; +import ProtectedRoute, { serverSideAuth } from "../../components/protectedRoute"; import { UserRole } from "@prisma/client"; const common = require('src/helpers/common'); diff --git a/components/publisher/PublisherCard.js b/components/publisher/PublisherCard.js index 248f067..c43025d 100644 --- a/components/publisher/PublisherCard.js +++ b/components/publisher/PublisherCard.js @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react' import toast from "react-hot-toast"; import axiosInstance from '../../src/axiosSecure'; +import ProtectedRoute, { serverSideAuth } from "../../components/protectedRoute"; //add months to date. works with negative numbers and numbers > 12 export function addMonths(numOfMonths, date) { @@ -53,6 +54,23 @@ export default function PublisherCard({ publisher }) { console.log(JSON.stringify(error)); } }; + const handleLoginAs = async (userId) => { + const response = await fetch('/api/auth/login-as', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ userId }), + }); + + if (response.ok) { + const data = await response.json(); + // Assuming you have some context or state management to update the session + updateSession(data.session); + } else { + alert("Failed to impersonate user."); + } + }; return isCardVisible ? ( // className="block p-6 max-w-sm bg-white rounded-lg border border-gray-200 shadow-md hover:bg-gray-100 dark:bg-gray-800 dark:border-gray-700 dark:hover:bg-gray-700 mb-3" @@ -89,6 +107,10 @@ export default function PublisherCard({ publisher }) { */} + + + +