mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-04-04 23:03:45 -04:00
Make local DEV work out of the box
This commit is contained in:
3
backend/shared/src/constants.ts
Normal file
3
backend/shared/src/constants.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export const getLocalEnv = () => {
|
||||
return (process.env.ENVIRONMENT?.toUpperCase() ?? 'DEV') as 'PROD' | 'DEV'
|
||||
}
|
||||
23
backend/shared/src/firebase-utils.ts
Normal file
23
backend/shared/src/firebase-utils.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import {readFileSync} from "fs";
|
||||
import {ENV_CONFIG} from "common/envs/constants";
|
||||
|
||||
export const getServiceAccountCredentials = () => {
|
||||
let keyPath = ENV_CONFIG.googleApplicationCredentials
|
||||
if (keyPath == null) {
|
||||
throw new Error(
|
||||
`Please set the GOOGLE_APPLICATION_CREDENTIALS environment variable to contain the path to your key file.`
|
||||
)
|
||||
}
|
||||
|
||||
if (!keyPath.startsWith('/')) {
|
||||
// Make relative paths relative to the current file
|
||||
keyPath = __dirname + '/' + keyPath
|
||||
// console.log(keyPath)
|
||||
}
|
||||
|
||||
try {
|
||||
return JSON.parse(readFileSync(keyPath, {encoding: 'utf8'}))
|
||||
} catch (e) {
|
||||
throw new Error(`Failed to load service account key from ${keyPath}: ${e}`)
|
||||
}
|
||||
}
|
||||
13
backend/shared/src/googleApplicationCredentials-dev.json
Normal file
13
backend/shared/src/googleApplicationCredentials-dev.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "compass-57c3c",
|
||||
"private_key_id": "ce2c7ef4aa137dd4726a8c9398c199ce051d4168",
|
||||
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCNkwHW3buaXX8K\nYWZMIPtHfObK1EmbsIbjbFZtWqcn1Ouw3nj/hCaQQhFmlAvGIP/P0A6d/mlr704o\nK26otjK3S290y/VhI3f2AoMh9af8ptK9mjMbmpwQI7cRu87M/EhbBlYeovntcNfj\n11tsMg83RYUIPXKuQddm2AejRDyhoHsB/QTdSLjDfUIR2pVvHSVbbQwm1cKiFAev\nPm01X3BFLOkzhUCYuzLI1hGXf7G4xm4XCTi2UQGZkI2FYjOgrQcNvkTB33DF0sze\nZCpc8iJsUyQYZxxvsxXd20CwPArsgy+6FU2+dGRrSE6lzwqYU9mnizqtjdp+VUh8\nkppRgZH7AgMBAAECggEAFxMKPjR2grLRZWY5j5fijKTBUvalpp/vZDrAnWMkklvk\nLDgeXXry9Bkoj+D6SEkRmJPPBhY0pXhj8y0dBJdpjbFYUZ96d2IaB7kiGVNaFVY1\nS9zJjqq02/aOPHAxRPyraFaQi77BYF8/eK2dg3VnQHlutMibG+a0TllQaV5SSX9J\n7cj4C6RX2p8Zvrmu6RsQ+dQWZFMwT8oHhuKCrL8+iw6bXYH1bSvxHLS+sCreIK7d\nYvY/DPxlC1rGaK8ovH5nuc3nQ+ECsWcDjcqjg4SmI7VwPpWeJ97exf3BGUmSFSOC\nCNfWu6bqhWleBkRozRCAuzQwesLkr38MsjU1iZS4VQKBgQDAG75trRLUHvuCoPpu\nHw4Ev1qpqVa1rE/16Zmzp7/wzoOP7yqoW2Og2adE5N2KUxR48nAMnR/uwRQcvlhX\n2Y7qEprl0AkXRXpneGiPFD/vzkTAjRWZdd0sIpo3+KCZcoO9OsJ8eA5Ch0bthv6q\nJBjd9VwgIaS5gd/eX76xBMV6ZQKBgQC8qL+bc6S3EiGoGf+Fzm+XXfXuVn0VA2sx\nhJjV/tfxxv6EIO90COsKy3CgaNOjU+NZ6jx+Kq07c4HBPA3c43qSRNUkWfQyyQgA\nPV3f5ZP40z+U4QnbhWSVSch91FCxwAnL9N7/KM77gAsHCdUuMlCVAYDr6JfDZiJR\nQ9X3cfLk3wKBgHn4o31rJ8s6KKIVpysH2JS3Ec8qzvzl/Ja7zHS+iyVPWUSnq0Pd\nUnIr/wHE9cv/V746312C3WVvfV+KkvikDxMa4PIMldkKqd7MGkbNqpKNOiWu7gnT\nRaviBFyJJR6IEJCyoAz7BMLEtQnWbhaEeK1kPSvBcJ6/kO3ViHNH/kHpAoGBAJ2Z\nLi8TBOc1y03dIfrKP6goAtiuAWF7cKF2DiK99/DudhE0XjQFeyuSVSx7RUisPEER\njqUqy3ndfOhKXZ5HnU3xGEh8qKWAECH7IZ927gyvk+6vqwdpwGOBtm1+3kYOkWCC\n14I5ueaYyR2BFke4Gl7PWb44mAbQHBzc2TITS3/rAoGBAKsCx9IQk1p0Am/+/NcW\nBnxnE5iNmaX3H4+pmtShl8gXxaI1DWnB7WbqjDOCu9HCnPZUdLXbrserny+ZSyNU\nnHE1InQn7T/xM7RXZRkZk09qmSRicXh6kS+cSBg1xU5vIPPsBTrWVmg74L9guNdo\nYQXUSGJaJbCZ6N35oz+Qf3NB\n-----END PRIVATE KEY-----\n",
|
||||
"client_email": "dev-contributors@compass-57c3c.iam.gserviceaccount.com",
|
||||
"client_id": "118371540020807340605",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dev-contributors%40compass-57c3c.iam.gserviceaccount.com",
|
||||
"universe_domain": "googleapis.com"
|
||||
}
|
||||
@@ -1,16 +1,12 @@
|
||||
import * as admin from 'firebase-admin'
|
||||
|
||||
import { getServiceAccountCredentials } from 'common/secrets'
|
||||
|
||||
export const getLocalEnv = () => {
|
||||
return (process.env.ENV?.toUpperCase() ?? 'STAGING') as 'PROD' | 'DEV'
|
||||
}
|
||||
import {getServiceAccountCredentials} from "shared/firebase-utils";
|
||||
|
||||
// Locally initialize Firebase Admin.
|
||||
export const initAdmin = () => {
|
||||
try {
|
||||
const env = getLocalEnv()
|
||||
const serviceAccount = getServiceAccountCredentials(env)
|
||||
const serviceAccount = getServiceAccountCredentials()
|
||||
console.log(
|
||||
`Initializing connection to ${serviceAccount.project_id} Firebase...`
|
||||
)
|
||||
|
||||
@@ -36,11 +36,11 @@ export type SupabaseTransaction = ITask<{}>
|
||||
export type SupabaseDirectClient = IDatabase<{}, IClient> | SupabaseTransaction
|
||||
|
||||
export function getInstanceId() {
|
||||
return process.env.SUPABASE_INSTANCE_ID ?? ENV_CONFIG.supabaseInstanceId
|
||||
return ENV_CONFIG.supabaseInstanceId
|
||||
}
|
||||
|
||||
export function getSupabasePwd() {
|
||||
return ENV_CONFIG.supabaseServiceRoleKey ?? process.env.SUPABASE_DB_PASSWORD
|
||||
return ENV_CONFIG.supabasePwd
|
||||
}
|
||||
|
||||
const newClient = (
|
||||
@@ -55,7 +55,7 @@ const newClient = (
|
||||
// This host is IPV4 compatible, for the google cloud VM
|
||||
host: 'aws-1-us-west-1.pooler.supabase.com',
|
||||
port: 5432,
|
||||
user: `postgres.ltzepxnhhnrnvovqblfr`,
|
||||
user: `postgres.${instanceId}`,
|
||||
password: password,
|
||||
database: 'postgres',
|
||||
pool_mode: 'session',
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
ServerMessage,
|
||||
CLIENT_MESSAGE_SCHEMA,
|
||||
} from 'common/api/websockets'
|
||||
import {LOCAL_DEV} from "common/envs/constants";
|
||||
import {IS_LOCAL} from "common/envs/constants";
|
||||
|
||||
const SWITCHBOARD = new Switchboard()
|
||||
|
||||
@@ -107,7 +107,7 @@ export function broadcastMulti(topics: string[], data: BroadcastPayload) {
|
||||
|
||||
// it isn't secure to do this in prod for auth reasons (maybe?)
|
||||
// but it's super convenient for testing
|
||||
if (LOCAL_DEV) {
|
||||
if (IS_LOCAL) {
|
||||
const msg = { type: 'broadcast', topic: '*', topics, data }
|
||||
sendToSubscribers('*', msg)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user