Spin out config files for each environment
This commit is contained in:
parent
21180c2ff0
commit
deed8426f1
|
@ -1,66 +1,29 @@
|
|||
import { DEV_CONFIG } from './envs/dev'
|
||||
import { EnvConfig, PROD_CONFIG } from './envs/prod'
|
||||
import { THEOREMONE_CONFIG } from './envs/theoremone'
|
||||
|
||||
const ENV = process.env.NEXT_PUBLIC_FIREBASE_ENV ?? 'PROD'
|
||||
|
||||
const CONFIGS = {
|
||||
PROD: PROD_CONFIG,
|
||||
DEV: DEV_CONFIG,
|
||||
THEOREMONE: THEOREMONE_CONFIG,
|
||||
}
|
||||
// @ts-ignore
|
||||
export const ENV_CONFIG: EnvConfig = CONFIGS[ENV]
|
||||
|
||||
export function isWhitelisted(email?: string) {
|
||||
switch (ENV) {
|
||||
case 'THEOREMONE':
|
||||
return email && (email.endsWith('@theoremone.co') || isAdmin(email))
|
||||
case 'PROD':
|
||||
case 'DEV':
|
||||
default:
|
||||
return true
|
||||
if (!ENV_CONFIG.whitelistEmail) {
|
||||
return true
|
||||
}
|
||||
return email && (email.endsWith(ENV_CONFIG.whitelistEmail) || isAdmin(email))
|
||||
}
|
||||
|
||||
// TODO: Before open sourcing, we should turn these into env vars
|
||||
export function isAdmin(email: string) {
|
||||
const ADMINS = [
|
||||
'akrolsmir@gmail.com', // Austin
|
||||
'jahooma@gmail.com', // James
|
||||
'taowell@gmail.com', // Stephen
|
||||
'manticmarkets@gmail.com', // Manifold
|
||||
]
|
||||
if (ENV === 'THEOREMONE') {
|
||||
ADMINS.push('david.glidden@theoremone.co')
|
||||
}
|
||||
return ADMINS.includes(email)
|
||||
return ENV_CONFIG.adminEmails.includes(email)
|
||||
}
|
||||
|
||||
export const FIREBASE_CONFIGS = {
|
||||
PROD: {
|
||||
apiKey: 'AIzaSyDp3J57vLeAZCzxLD-vcPaGIkAmBoGOSYw',
|
||||
authDomain: 'mantic-markets.firebaseapp.com',
|
||||
projectId: 'mantic-markets',
|
||||
storageBucket: 'mantic-markets.appspot.com',
|
||||
messagingSenderId: '128925704902',
|
||||
appId: '1:128925704902:web:f61f86944d8ffa2a642dc7',
|
||||
measurementId: 'G-SSFK1Q138D',
|
||||
},
|
||||
DEV: {
|
||||
apiKey: 'AIzaSyBoq3rzUa8Ekyo3ZaTnlycQYPRCA26VpOw',
|
||||
authDomain: 'dev-mantic-markets.firebaseapp.com',
|
||||
projectId: 'dev-mantic-markets',
|
||||
storageBucket: 'dev-mantic-markets.appspot.com',
|
||||
messagingSenderId: '134303100058',
|
||||
appId: '1:134303100058:web:27f9ea8b83347251f80323',
|
||||
measurementId: 'G-YJC9E37P37',
|
||||
},
|
||||
THEOREMONE: {
|
||||
apiKey: 'AIzaSyBSXL6Ys7InNHnCKSy-_E_luhh4Fkj4Z6M',
|
||||
authDomain: 'theoremone-manifold.firebaseapp.com',
|
||||
projectId: 'theoremone-manifold',
|
||||
storageBucket: 'theoremone-manifold.appspot.com',
|
||||
messagingSenderId: '698012149198',
|
||||
appId: '1:698012149198:web:b342af75662831aa84b79f',
|
||||
measurementId: 'G-Y3EZ1WNT6E',
|
||||
},
|
||||
}
|
||||
|
||||
const DOMAINS = {
|
||||
PROD: 'manifold.markets',
|
||||
DEV: 'manifold.markets',
|
||||
THEOREMONE: 'theoremone.manifold.markets',
|
||||
}
|
||||
// @ts-ignore
|
||||
export const DOMAIN = DOMAINS[ENV]
|
||||
// @ts-ignore
|
||||
export const PROJECT_ID = FIREBASE_CONFIGS[ENV].projectId
|
||||
export const DOMAIN = ENV_CONFIG.domain
|
||||
export const FIREBASE_CONFIG = ENV_CONFIG.firebaseConfig
|
||||
export const PROJECT_ID = ENV_CONFIG.firebaseConfig.projectId
|
||||
|
|
14
common/envs/dev.ts
Normal file
14
common/envs/dev.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import { EnvConfig, PROD_CONFIG } from './prod'
|
||||
|
||||
export const DEV_CONFIG: EnvConfig = {
|
||||
...PROD_CONFIG,
|
||||
firebaseConfig: {
|
||||
apiKey: 'AIzaSyBoq3rzUa8Ekyo3ZaTnlycQYPRCA26VpOw',
|
||||
authDomain: 'dev-mantic-markets.firebaseapp.com',
|
||||
projectId: 'dev-mantic-markets',
|
||||
storageBucket: 'dev-mantic-markets.appspot.com',
|
||||
messagingSenderId: '134303100058',
|
||||
appId: '1:134303100058:web:27f9ea8b83347251f80323',
|
||||
measurementId: 'G-YJC9E37P37',
|
||||
},
|
||||
}
|
47
common/envs/prod.ts
Normal file
47
common/envs/prod.ts
Normal file
|
@ -0,0 +1,47 @@
|
|||
export type EnvConfig = {
|
||||
domain: string
|
||||
firebaseConfig: FirebaseConfig
|
||||
|
||||
// Access controls
|
||||
adminEmails: string[]
|
||||
whitelistEmail?: string // e.g. '@theoremone.co'. If not provided, all emails are whitelisted
|
||||
visibility: 'PRIVATE' | 'PUBLIC'
|
||||
|
||||
// Branding
|
||||
moneyMoniker: string // e.g. 'M$'
|
||||
faviconPath?: string // Should be a file in /public
|
||||
navbarLogoPath?: string
|
||||
}
|
||||
|
||||
type FirebaseConfig = {
|
||||
apiKey: string
|
||||
authDomain: string
|
||||
projectId: string
|
||||
storageBucket: string
|
||||
messagingSenderId: string
|
||||
appId: string
|
||||
measurementId: string
|
||||
}
|
||||
|
||||
export const PROD_CONFIG: EnvConfig = {
|
||||
domain: 'manifold.markets',
|
||||
firebaseConfig: {
|
||||
apiKey: 'AIzaSyDp3J57vLeAZCzxLD-vcPaGIkAmBoGOSYw',
|
||||
authDomain: 'mantic-markets.firebaseapp.com',
|
||||
projectId: 'mantic-markets',
|
||||
storageBucket: 'mantic-markets.appspot.com',
|
||||
messagingSenderId: '128925704902',
|
||||
appId: '1:128925704902:web:f61f86944d8ffa2a642dc7',
|
||||
measurementId: 'G-SSFK1Q138D',
|
||||
},
|
||||
adminEmails: [
|
||||
'akrolsmir@gmail.com', // Austin
|
||||
'jahooma@gmail.com', // James
|
||||
'taowell@gmail.com', // Stephen
|
||||
'manticmarkets@gmail.com', // Manifold
|
||||
],
|
||||
moneyMoniker: 'M$',
|
||||
visibility: 'PUBLIC',
|
||||
navbarLogoPath: '',
|
||||
faviconPath: '/favicon.ico',
|
||||
}
|
19
common/envs/theoremone.ts
Normal file
19
common/envs/theoremone.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import { EnvConfig, PROD_CONFIG } from './prod'
|
||||
|
||||
export const THEOREMONE_CONFIG: EnvConfig = {
|
||||
domain: 'theoremone.manifold.markets',
|
||||
firebaseConfig: {
|
||||
apiKey: 'AIzaSyBSXL6Ys7InNHnCKSy-_E_luhh4Fkj4Z6M',
|
||||
authDomain: 'theoremone-manifold.firebaseapp.com',
|
||||
projectId: 'theoremone-manifold',
|
||||
storageBucket: 'theoremone-manifold.appspot.com',
|
||||
messagingSenderId: '698012149198',
|
||||
appId: '1:698012149198:web:b342af75662831aa84b79f',
|
||||
measurementId: 'G-Y3EZ1WNT6E',
|
||||
},
|
||||
adminEmails: [...PROD_CONFIG.adminEmails, 'david.glidden@theoremone.co'],
|
||||
whitelistEmail: '@theoremone.co',
|
||||
moneyMoniker: 'T$',
|
||||
visibility: 'PRIVATE',
|
||||
faviconPath: '/theoremone/logo.ico',
|
||||
}
|
Loading…
Reference in New Issue
Block a user