refactor .env usage due to unexpexted env values

This commit is contained in:
Dobromir Popov
2024-03-31 20:17:06 +03:00
parent 82179f62a3
commit e5ba7a33a1
25 changed files with 53 additions and 92 deletions

10
.env
View File

@ -1,11 +1,9 @@
#NODE_TLS_REJECT_UNAUTHORIZED='0'
SSL_ENABLED=false
NEXT_PUBLIC_PROTOCOL=https
NEXT_PUBLIC_HOST=localhost
NEXT_PUBLIC_PORT=3003
NEXTAUTH_URL=https://localhost:3003
# NEXTAUTH_URL_INTERNAL=http://127.0.0.1:3003
# SSL_ENABLED=false
# NEXT_PUBLIC_HOST=localhost
# NEXT_PUBLIC_PORT=3003
# PUBLIC_URL=http://localhost:3003
# Linux: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32
NEXTAUTH_SECRET=ed8a9681efc414df89dfd03cd188ed58

View File

@ -1,7 +1,7 @@
NEXT_PUBLIC_PROTOCOL=https
SSL_ENABLED=false
NEXT_PUBLIC_PORT=
NEXT_PUBLIC_HOST=staging.mwhitnessing.com
NEXTAUTH_URL= https://staging.mwhitnessing.com
PUBLIC_URL=https://staging.mwhitnessing.com
# Linux: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32
NEXTAUTH_SECRET=1dd8a5457970d1dda50600be28e935ecc4513ff27c49c431849e6746f158d638

View File

@ -1,15 +1,12 @@
NODE_TLS_REJECT_UNAUTHORIZED=0
# NODE_EXTRA_CA_CERTS=C:\\Users\\popov\\AppData\\Local\\mkcert
NEXT_PUBLIC_PROTOCOL=https
PROTOCOL=https
NEXT_PUBLIC_HOST=localhost
NEXT_PUBLIC_PORT=3003
NEXTAUTH_URL=https://localhost:3003
PUBLIC_URL=https://localhost:3003
SSL_ENABLED=true
TELEGRAM_BOT=true
SSL_KEY=./certificates/localhost-key.pem
SSL_CERT=./certificates/localhost.pem
DATABASE_URL=mysql://root:Zelen0ku4e@192.168.0.10:3306/cart_dev
# DATABASE_URL=mysql://cart:cartpw@localhost:3306/cart
# DATABASE_URL=mysql://cart:cartpw@localhost:3306/cart

View File

@ -1,37 +0,0 @@
NODE_TLS_REJECT_UNAUTHORIZED='0'
# DATABASE_URL="file:./src/data/dev.db"
# DATABASE_URL="mysql://root:Zelen0ku4e@192.168.0.10:3306/cart"
NEXT_PUBLIC_PORT=
# NEXT_PUBLIC_NEXTAUTH_URL=https://cart.d-popov.com
NEXT_PUBLIC_PROTOCOL=https
NEXT_PUBLIC_HOST=cart.d-popov.com
NEXTAUTH_URL=https://cart.d-popov.com
# NEXTAUTH_URL= https://demo.mwhitnessing.com
# Linux: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32
NEXTAUTH_SECRET=ed8a9681efc414df89dfd03cd188ed58
DATABASE_URL=mysql://cart:cart2023@192.168.0.10:3306/cart_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=
EMAIL_SERVER=smtp://8ec69527ff2104:c7bc05f171c96c@smtp.mailtrap.io:2525
EMAIL_FROM=noreply@example.com

View File

@ -1,7 +1,7 @@
NEXT_PUBLIC_PROTOCOL=https
NEXT_PUBLIC_PORT=
NEXT_PUBLIC_HOST=sofia.mwhitnessing.com
NEXTAUTH_URL= https://sofia.mwhitnessing.com
SSL_ENABLED=false # we're behind a reverse proxy. SSL is handled by the proxy
PUBLIC_URL= https://sofia.mwhitnessing.com
# Linux: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32
NEXTAUTH_SECRET=1dd8a5457970d1dda50600be28e935ecc4513ff27c49c431849e6746f158d638

View File

@ -1,13 +1,15 @@
NODE_TLS_REJECT_UNAUTHORIZED='0'
# DATABASE_URL="file:./src/data/dev.db"
# DATABASE_URL="mysql://root:Zelen0ku4e@192.168.0.10:3306/cart"
NEXT_PUBLIC_PORT=5001
NEXT_PUBLIC_PROTOCOL=https
SSL_ENABLED=true
NEXT_PUBLIC_PORT=
NEXT_PUBLIC_HOST=cart.d-popov.com
NEXTAUTH_URL=https://cart.d-popov.com
PUBLIC_URL=https://cart.d-popov.com
# Linux: `openssl rand -hex 32` or go to https://generate-secret.now.sh/32
NEXTAUTH_SECRET=ed8a9681efc414df89dfd03cd188ed58
DATABASE_URL=mysql://cart:cartpw@192.168.0.10:3306/cart_dev
DATABASE_URL=mysql://cart:cart2023@192.168.0.10:3306/cart_demo
APPLE_ID=
APPLE_TEAM_ID=
@ -23,14 +25,11 @@ FACEBOOK_SECRET=
GITHUB_ID=
GITHUB_SECRET=
GOOGLE_ID=926212607479-d3m8hm8f8esp3rf1639prskn445sa01v.apps.googleusercontent.com
GOOGLE_SECRET=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
# GOOGLE_ID=926212607479-d3m8hm8f8esp3rf1639prskn445sa01v.apps.googleusercontent.com
# GOOGLE_SECRET=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
TWITTER_ID=
TWITTER_SECRET=
EMAIL_SERVER=smtp://8ec69527ff2104:c7bc05f171c96c@smtp.mailtrap.io:2525
EMAIL_FROM=noreply@example.com
GMAIL_EMAIL_USERNAME=
GMAIL_EMAIL_APP_PASS=

4
.vscode/launch.json vendored
View File

@ -6,7 +6,7 @@
"configurations": [
{
"name": "Run npm nodemon (DEV)",
"command": "npm run debug-env",
"command": "npm run debug",
"request": "launch",
"type": "node-terminal",
"preLaunchTask": "killInspector",
@ -35,7 +35,7 @@
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}",
"command": "conda activate node && npm run debug-env",
"command": "conda activate node && npm run debug",
},
{
"name": "Run conda npm TEST",

View File

@ -10,7 +10,7 @@
"homepage": "https://git.d-popov.com/popov/next-cart-app",
"scripts": {
"debug": "nodemon --inspect server.js",
"debug-env": "cross-env NODE_ENV=development dotenv -e .env.development -- nodemon --inspect server.js",
"debug-env-dev": "dotenv -e .env.development -- nodemon --inspect server.js",
"build": "next build",
"buildWin": "npm run build",
"start": "next start",
@ -109,4 +109,4 @@
"depcheck": "^1.4.7",
"prisma": "^5.11.0"
}
}
}

View File

@ -24,7 +24,7 @@ import { isLoggedIn, setAuthTokens, clearAuthTokens, getAccessToken, getRefreshT
export const authOptions: NextAuthOptions = {
// https://next-auth.js.org/configuration/providers/oauth
site: process.env.NEXTAUTH_URL,
site: process.env.PUBLIC_URL,
secret: process.env.NEXTAUTH_SECRET, // Ensure you have this set in your .env file
//adapter: PrismaAdapter(prisma),
providers: [

View File

@ -444,7 +444,7 @@ async function GenerateSchedule(axios: Axios, date: string, copyFromPreviousMont
}
//create shifts using API
// const { data: createdShifts } = await axios.post(`${process.env.NEXTAUTH_URL}/api/data/shifts`, shiftsToCreate);
// const { data: createdShifts } = await axios.post(`${process.env.PUBLIC_URL}/api/data/shifts`, shiftsToCreate);
//const { data: allshifts } = await axios.get(`/api/data/shifts`);
return {}; //allshifts;

View File

@ -133,7 +133,7 @@ export const getServerSideProps = async (context) => {
const role = session?.user.role;
console.log("server role: " + role);
var queryUrl = process.env.NEXTAUTH_URL + "/api/data/availabilities?select=id,name,isActive,dayofweek,dayOfMonth,startTime,endTime,publisher.firstName,publisher.lastName,publisher.id";
var queryUrl = process.env.PUBLIC_URL + "/api/data/availabilities?select=id,name,isActive,dayofweek,dayOfMonth,startTime,endTime,publisher.firstName,publisher.lastName,publisher.id";
if (role === UserRole.USER || context.query.my) {
queryUrl += `&where={"publisherId":"${session?.user.id}"}`;
} else if (role == UserRole.ADMIN) {
@ -145,7 +145,7 @@ export const getServerSideProps = async (context) => {
}
var resp = await axios.get(
queryUrl
// process.env.NEXTAUTH_URL + "/api/data/availabilities?include=publisher",
// process.env.PUBLIC_URL + "/api/data/availabilities?include=publisher",
, { decompress: true });
var items = resp.data;
console.log("got " + items.length + " availabilities");

View File

@ -31,7 +31,7 @@ export const getServerSideProps = async (context) => {
};
}
const { data: item } = await axios.get(
process.env.NEXTAUTH_URL + "/api/data/availabilities/" + context.params.id
process.env.PUBLIC_URL + "/api/data/availabilities/" + context.params.id
);
return {

View File

@ -893,7 +893,7 @@ export const getServerSideProps = async (context) => {
const axios = await axiosServer(context);
const baseUrl = common.getBaseUrl();
console.log('runtime BaseUrl: ' + baseUrl);
console.log('runtime NEXTAUTH_URL: ' + process.env.NEXTAUTH_URL);
console.log('runtime PUBLIC_URL: ' + process.env.PUBLIC_URL);
console.log('Runtime Axios Base URL:', axios.defaults.baseURL);
const currentDate = new Date();

View File

@ -7,9 +7,9 @@ export const getServerSideProps = async (context) => {
console.log("edit page getServerSideProps");
const axios = await axiosServer(context);
const { id } = context.query;
const { data } = await axios.get(`${process.env.NEXTAUTH_URL}/api/data/cartevents/` + id);
const { data } = await axios.get(`${process.env.PUBLIC_URL}/api/data/cartevents/` + id);
const locations = await axios
.get(`${process.env.NEXTAUTH_URL}/api/data/locations?select=id,name`)
.get(`${process.env.PUBLIC_URL}/api/data/locations?select=id,name`)
.then((res) => {
console.log("locations: " + JSON.stringify(res.data));
return res.data;

View File

@ -26,7 +26,7 @@ export const getServerSideProps = async (context) => {
const axios = await axiosServer(context);
const locations = await axios
.get(`${process.env.NEXTAUTH_URL}/api/data/locations?select=id,name`)
.get(`${process.env.PUBLIC_URL}/api/data/locations?select=id,name`)
.then((res) => {
console.log("locations: " + JSON.stringify(res.data));
return res.data;
@ -41,7 +41,7 @@ export const getServerSideProps = async (context) => {
const { id } = context.query.id;
const { data: item } = await axiosInstance.get(
process.env.NEXTAUTH_URL + "/api/data/cartevents/" + context.params.id
process.env.PUBLIC_URL + "/api/data/cartevents/" + context.params.id
);
return {

View File

@ -99,11 +99,11 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
const axios = await axiosServer(context);
const { data: location } = await axios.get(
`${process.env.NEXTAUTH_URL}/api/data/locations/${context.params.id}`
`${process.env.PUBLIC_URL}/api/data/locations/${context.params.id}`
);
if (location.backupLocationId !== null) {
const { data: backupLocation } = await axios.get(
process.env.NEXTAUTH_URL + "/api/data/locations/" + location.backupLocationId
process.env.PUBLIC_URL + "/api/data/locations/" + location.backupLocationId
);
location.backupLocationName = backupLocation.name;
location.backupLocationContent = backupLocation ? backupLocation.content : "";

View File

@ -29,7 +29,7 @@ export const getServerSideProps = async (context) => {
};
}
const { data: item } = await axios.get(
process.env.NEXTAUTH_URL + "/api/data/locations/" + context.params.id
process.env.PUBLIC_URL + "/api/data/locations/" + context.params.id
);
console.log(item) //this is the location object
context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");

View File

@ -32,7 +32,7 @@ export const getServerSideProps = async (context) => {
}
const { data: loc } = await axios.get(
`${process.env.NEXTAUTH_URL}api/data/locations/` + context.params.id
`${process.env.PUBLIC_URL}api/data/locations/` + context.params.id
);
console.log(location) //this is the location object
context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");

View File

@ -44,7 +44,7 @@ export const getServerSideProps = async (context) => {
props: {}
};
}
var url = process.env.NEXTAUTH_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,assignments,assignments.shift";
var url = process.env.PUBLIC_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,assignments,assignments.shift";
console.log("GET PUBLISHER FROM:" + url)
const { data: item } = await axios.get(url);

View File

@ -47,7 +47,7 @@ export const getServerSideProps = async (context) => {
props: {}
};
}
var url = process.env.NEXTAUTH_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,shifts";
var url = process.env.PUBLIC_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,shifts";
console.log("GET PUBLISHER FROM:" + url)
const { data } = await axios.get(url);

View File

@ -32,7 +32,7 @@ export const getServerSideProps = async (context) => {
// };
// }
// const { data: loc } = await axiosInstance.get(
// `${process.env.NEXTAUTH_URL}api/data/locations/` + context.params.id
// `${process.env.PUBLIC_URL}api/data/locations/` + context.params.id
// );
// console.log(location) //this is the location object

View File

@ -33,7 +33,7 @@ export const getServerSideProps = async (context) => {
// }
// const { data: loc } = await axiosInstance.get(
// `${process.env.NEXTAUTH_URL}api/data/locations/` + context.params.id
// `${process.env.PUBLIC_URL}api/data/locations/` + context.params.id
// );
// console.log(location) //this is the location object
// context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");

2
process.d.ts vendored
View File

@ -1,6 +1,6 @@
declare namespace NodeJS {
export interface ProcessEnv {
NEXTAUTH_URL: string
PUBLIC_URL: string
NEXTAUTH_SECRET: string
GITHUB_ID: string
GITHUB_SECRET: string

View File

@ -28,21 +28,23 @@ let baseUrlGlobal;
// require('dotenv').config();
// }
console.log("initial process.env.NODE_ENV = ", process.env.NODE_ENV);
console.log("initial process.env.NODE_ENV = ", process.env.NODE_ENV); //NODE_ENV can be passed as docker param
require('dotenv').config({
path: `.env.${process.env.NODE_ENV}`
});
console.log("process.env.NODE_ENV = ", process.env.NODE_ENV);
const PROTOCOL = process.env.PROTOCOL;
const PORT = process.env.NEXT_PUBLIC_PORT || 3000;
const HOST = process.env.NEXT_PUBLIC_HOST;
const LOAD_CERTS = process.env.PROTOCOL === 'https';
const dev = process.env.NODE_ENV !== "production";
const PROTOCOL = process.env.NEXT_PUBLIC_PROTOCOL;
const nextApp = next({ dev });
const nextHandler = nextApp.getRequestHandler();
console.log("process.env.SSL_ENABLED = ", process.env.SSL_ENABLED);
console.log("process.env.NEXTAUTH_URL = ", process.env.NEXTAUTH_URL);
console.log("process.env.PROTOCOL = ", process.env.PROTOCOL);
console.log("process.env.PUBLIC_URL = ", process.env.PUBLIC_URL);
console.log("process.env.NEXT_PUBLIC_PORT = ", process.env.NEXT_PUBLIC_PORT);
console.log("process.env.TELEGRAM_BOT = ", process.env.TELEGRAM_BOT);
@ -559,7 +561,7 @@ nextApp
});
//check if ssl is enabled
if (process.env.SSL_ENABLED === "true") {
if (LOAD_CERTS) {
console.log("SSL_ENABLED = true");
// Redirect from http to https
// server.use((req, res, next) => {

View File

@ -78,8 +78,8 @@ exports.setBaseUrl = function (req) {
exports.getBaseUrl = function (relative = "", req = null) {
if (typeof window === 'undefined') {
// Server-side logic
// Read the base URL from env (NEXTAUTH_URL):
return process.env.NEXTAUTH_URL + relative;
// Read the base URL from env (PUBLIC_URL):
return process.env.PUBLIC_URL + relative;
// const filePath = path.join(__dirname, 'baseUrl.txt');
@ -122,6 +122,8 @@ exports.getPrismaClient = function getPrismaClient() {
datasources: { db: { url: process.env.DATABASE_URL } },
});
}
logger.debug("getPrismaClient: process.env.DATABASE_URL = ", process.env.DATABASE_URL);
return prisma;
}