Merge pull request #248 from AAVikings/master

Configuration Updates
This commit is contained in:
benme authored and GitHub committed 2019-07-01 16:21:33 -03:00
commit a718631e9b
19 files changed
+2327 -4268

No files matched your search

+994 -522
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -35,7 +35,7 @@
"@superalgos/events-client": "0.0.2",
"@superalgos/key-vault-client": "0.0.32",
"@superalgos/logs-client": "0.0.1",
"@superalgos/operations-client": "0.0.34",
"@superalgos/operations-client": "0.0.38",
"@superalgos/strategizer-client": "0.0.18",
"@superalgos/teams-client": "0.0.40",
"@superalgos/users-client": "0.0.27",
+5 -5
View File
@@ -82,7 +82,7 @@ services:
- mongo
saweb-api:
image: superalgos/saweb:0.1.0
image: superalgos/saweb-api:0.1.0
restart: always
env_file: ./env/saweb-api.env
command: node .
@@ -114,7 +114,7 @@ services:
- mongo-express
cockpit-api:
image: superalgos/cockpit-api:1.0.0
image: superalgos/cockpit-api:0.1.0
restart: always
env_file: ./env/cockpit-api.env
command: npm start
@@ -127,7 +127,7 @@ services:
image: superalgos/strategizer-api:0.1.0
restart: always
env_file: ./env/strategizer-api.env
command: npm start
command: node .
networks:
- superalgos_net
depends_on:
@@ -147,7 +147,7 @@ services:
image: superalgos/users-api:0.1.0
restart: always
env_file: ./env/users-api.env
command: npm start
command: node .
ports:
- "4000:4000"
networks:
@@ -212,7 +212,7 @@ services:
image: superalgos/master-app-api:0.1.0
restart: always
env_file: ./env/master-app-api.env
command: npm start
command: node .
ports:
- "4100:4100"
networks:
+5 -5
View File
@@ -82,7 +82,7 @@ services:
- mongo
saweb-api:
image: superalgos/saweb:0.1.0
image: superalgos/saweb-api:0.1.0
restart: always
env_file: ./env/saweb-api.env
command: node .
@@ -114,7 +114,7 @@ services:
- mongo-express
cockpit-api:
image: superalgos/cockpit-api:1.0.0
image: superalgos/cockpit-api:0.1.0
restart: always
env_file: ./env/cockpit-api.env
command: npm start
@@ -127,7 +127,7 @@ services:
image: superalgos/strategizer-api:0.1.0
restart: always
env_file: ./env/strategizer-api.env
command: npm start
command: node .
networks:
- superalgos_net
depends_on:
@@ -147,7 +147,7 @@ services:
image: superalgos/users-api:0.1.0
restart: always
env_file: ./env/users-api.env
command: npm start
command: node .
ports:
- "4000:4000"
networks:
@@ -212,7 +212,7 @@ services:
image: superalgos/master-app-api:0.1.0
restart: always
env_file: ./env/master-app-api.env
command: npm start
command: node .
ports:
- "4100:4100"
networks:
+8 -4
View File
@@ -83,7 +83,7 @@ services:
- mongo
saweb-api:
image: superalgos/saweb:0.1.0
image: superalgos/saweb-api:0.1.0
restart: always
build: ../saweb-api
env_file: ./env/saweb-api.env
@@ -101,6 +101,8 @@ services:
build: ../LogsServerModule
env_file: ./env/logs-api.env
command: npm start
ports:
- "4007:4007"
networks:
- superalgos_net
depends_on:
@@ -137,7 +139,7 @@ services:
restart: always
build: ../StrategizerServerModule
env_file: ./env/strategizer-api.env
command: npm start
command: node .
ports:
- "4008:4008"
networks:
@@ -163,7 +165,7 @@ services:
restart: always
build: ../UsersModule/server
env_file: ./env/users-api.env
command: npm start
command: node .
ports:
- "4000:4000"
networks:
@@ -203,6 +205,8 @@ services:
build: ../NotificationsModule/server
env_file: ./env/notifications-api.env
command: npm start
ports:
- "4006:4006"
networks:
- superalgos_net
depends_on:
@@ -235,7 +239,7 @@ services:
restart: always
build: ./server
env_file: ./env/master-app-api.env
command: npm start
command: node .
ports:
- "4100:4100"
networks:
+5 -4
View File
@@ -14,13 +14,14 @@ DEFAULT_BALANCE_ASSET_B=0.001
# Kubernetes configuration
GATEWAY_ENDPOINT_K8S=http://localhost:4100/graphql
CLONE_EXECUTOR_IMAGE=superalgos/clone-executor:1.0.25
CLUSTER_NAME=docker-for-desktop-cluster
CLUSTER_SERVER=https://kubernetes:6445
CLONE_EXECUTOR_IMAGE=superalgos/clone-executor:1.0.30
CLUSTER_NAME=docker-for-desktop-cluster
# CERTIFICATE_AUTHORITY_DATA=
INSECURE_SKIP_TLS_VERIFY=true
CONTEXT_NAME=docker-for-desktop
USER_NAME=docker-for-desktop
# USER_PASSWORD=
CLIENT_CERTIFICATE_DATA=LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM5RENDQWR5Z0F3SUJBZ0lJU2doRTQ5cFpBdEV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB4T1RBME1Ua3hOVE13TXpOYUZ3MHlNREExTURJeE5ETXhNVFJhTURZeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sc3dHUVlEVlFRREV4SmtiMk5yWlhJdFptOXlMV1JsCmMydDBiM0F3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3VERGppbnl5V3l4aVUKbVlzelIxUXhCdzAxZUltVTRnMU1VQVRIN3FCazFVdWdVVHAzWVUzWVJ1NitGdnpwbHVoY2lWVFByeDdDamRvcwo2ODBsM0pVWTdTZzdIYjNQTlRhQm9PdnlxSGVXYmd4TDBsQitXeG1lVEJ4QnlBV09VR0Fmd0pHVnBRL2JTQnNwCndhYmJrdXpmMzRxcFFreHFrRVVwbDlHOUhaNFZrZ0Mvb280Tm1YTlBOMmlSMkowUXN0TjY4ZmZqcGNQSVJCdzAKR3h5ZVJPNzh6SUQralpDYi9hUGt3YnZpVmNEV1ZvSU9VbWlUQlFzd1dTMCtzWG5tamtjWW8rR2JjVmdsT3BLVApxN0lPOUZoaDVGZ1RLZk9SYmxLNXl3YXdETXN2TmpVbEFUZ2ZKODU5ZXFRaGo3RlFSRUpQRkY2MGVId0Q4RGhhClpqL3ZLbnlwQWdNQkFBR2pKekFsTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHM05RT1VNclJ3bHZINDRLRjMvSFV2eGxxTi9SRlpyQQpHZWlWREJ6cUpDd2wwSFBNQkh4T0ZCVnEvQ1dTQVNjeDJlV0xQWG5PNXBJOWFJckN5R3c3Y3A5S290TUVkVW4vCmVpMmVPdE1NSkpTMGt6empqUGNtOHZ2OXNNN2pvQXhWQkF1cG5VaStJMDRmSVRIcDlpSkxET29uUzJoanBpYm0KZzVQNlVUTGFBanUrNUhqRTZHZkNROFh2WVRRbytjUlV3MjhZd1l0SG5Cam5KVVRtK2lXand6WTJtbG1odGZlbQpJSkkzNGhXeEYrZHl6eVR4NEQ1aTNyeGtiWm5vQ3JTK1A2YmNWUFMvSWkreUk2WjdjKzlvdVNjaWlHRmNSWGhRCkMwa0NvV1k2L2FEYlVZRzZvSVdZZVB3OXhQbWVsdCtyRHdJdHFyYU5TWE9MQVV4R1llZmZXQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
CLIENT_KEY_DATA=LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBcmd3NDRwOHNsc3NZbEptTE0wZFVNUWNOTlhpSmxPSU5URkFFeCs2Z1pOVkxvRkU2CmQyRk4yRWJ1dmhiODZaYm9YSWxVejY4ZXdvM2FMT3ZOSmR5VkdPMG9PeDI5enpVMmdhRHI4cWgzbG00TVM5SlEKZmxzWm5rd2NRY2dGamxCZ0g4Q1JsYVVQMjBnYktjR20yNUxzMzkrS3FVSk1hcEJGS1pmUnZSMmVGWklBdjZLTwpEWmx6VHpkb2tkaWRFTExUZXZIMzQ2WER5RVFjTkJzY25rVHUvTXlBL28yUW0vMmo1TUc3NGxYQTFsYUNEbEpvCmt3VUxNRmt0UHJGNTVvNUhHS1BobTNGWUpUcVNrNnV5RHZSWVllUllFeW56a1c1U3Vjc0dzQXpMTHpZMUpRRTQKSHlmT2ZYcWtJWSt4VUVSQ1R4UmV0SGg4QS9BNFdtWS83eXA4cVFJREFRQUJBb0lCQVFDWWpXZnk0dmV2T0ZiVQpNUHo4dGtHS001Y1ZUaEN4YWEya1BPTGo1em01QitlZ25uSHpuMXNlL1pWWEVra2Q2VUxEa1MvQVZjdE5WZzVzCm4wWVNNSlNTNDVRR3ROdmcyZEJyc0lQL0RrQzducnV5WGFabUNpMmJQVFRyUjRudkltNE9ocmhVaFBnd0NMU2UKVmZtTnJldG5rc1V6OUVPTWgrWEhQaVg5Y0E5VzhVOEM5UGNoU3ZxSjFGR3crc0paLysyeGltdnF0RnUzMEZ0egphUkxOaEFVTmpGN2xuUUZhZS9pS2xGcDJ2MWRteXRCMUp5eTRkRzl1TFJSWWN4Qy9pa1Q4VUUzZ1RVdGR2V2lNClE4QXlQaVEvVVl3THVmazMreFIyUGxLUEFMdEF4MHhzWVJKTWVmaFJpWFlJWXZoa2srRTZPdGZyc2ZzZW15REoKODdRNzM3bnhBb0dCQU5pNy9GdkhBbmdnc1V3VDMzM1hoNzk5OGhiNTRWSzU1Yzc5MEtnRm9yeUpUYnhIWU5PZQpvRkdWbWd5YU92d1hWbnVhZFpoNlpsRU9mMXJXbVNPcWFXRjlGNFhYdnB6NWZuajJJUU1xV2ZUOTViSC9yaGRTClMzQTd1RmxQL3RlcS9JMmlpbHhsSFhKa3lEemxKeDJlbDhWR1hHeXpxTjBBZ3RPdjdvMElhYU9WQW9HQkFNMlUKZFJSMG5mRnd3MGpjVHVvU0ZBalBIaytEQnorZVRwbVFQWWZIZTJpb21qM0hadEkyMm1adG9sV1l4UTNqRjlPbAp5RkFvY2RjK2trS1V4VVBkMng3Qm44VkE5Rkg5bkN2NEZ1VDRJNmRPbUZkeWZtc3R1MkRnSWQ3aThYeGdURlM5CklPL0lqTWhuRzIzaHBVSkZDTU5VOCtMRXBKeUZBR29YK2lvcnFtL0ZBb0dCQU1IL2txWDcvc1BVVDU4UGNzOUwKcXlERzlYbUhkaDc4Y3kzU2w0Q3VlcnBVRkpiaE5WUjIrbjNNY1RXeW4vV2lWakVSVXcySEVpcWYxWE5ULzRPagpOK3loY2ZyRjRNTFZ1RlZCeXM3d2k5RDFxekttOEFmRUMrNk1KamtibDdzb1BDUHpSL0hvT0hGNnNKbUJiSC9nCncyMDd5K01vOVkvTXMwNFVmbTBUQ0t2NUFvR0JBTWl6dlRJQlFBbHRHMXBRcTBKZDcrMUJ0OGZNbGhFSURwaGgKZDVETnNhL1ZtdS9oY29LY1J0QmxERzBndnBEMk9sYklyUzJFcnMrREtPdVRycHE1UjZsWlF4QWlmK1JrQWtueQo1UGNaUWtXZXQ1LzRDVys5c0FlK0NaTStZS0FhcTZxM0VpYkcxcHIzL3BGaUVDTUlucXVFanEyL2FTM2RzeS9nCnhMelM4SXc1QW9HQUNOR2hlOWZmVkVCTDREZ1B5YjViNDhLVmttT2loMnl5VkMxTkRtakdiYWVhTWhLQzNzekQKMEVqZU0zTmNjNnViVmNGTGVUV0JBc2hJTk1zSENCWmZISFpRZk9ybkQ3dHNBY1M3MGt5eFBxZzc0c25TSEZPcAoxMlRXQnVFNUU5V2l0aW1JZHRJZWhwdlVLZVZWUTd0NXgrSnNsS2N3MnZ4YjdWV1E2SWg1cURrPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
CLIENT_CERTIFICATE_DATA=
CLIENT_KEY_DATA=
+1 -1
View File
@@ -15,7 +15,7 @@ TEAMS_API_URL=http://teams-api:4001/graphql
USERS_API_URL=http://users-api:4000/graphql
EVENTS_API_URL=http://events-api:4005/graphql
KEYVAULT_API_URL=http://keyvault-api:4002/graphql
NOTIFICATIONS_API_URL=http://notifications-api:4004/graphql
NOTIFICATIONS_API_URL=http://notifications-api:4006/graphql
OPERATIONS_API_URL=http://clones-api:4003/graphql
LOGS_API_URL=http://logs-api:4007/graphql
STRATEGIZER_API_URL=http://strategizer-api:4008/graphql
+1 -1
View File
@@ -1,5 +1,5 @@
NODE_ENV=production
PORT=4004
PORT=4006
PRESHARED_GATEWAY_KEY=notifications_key
GENERATE_SOURCEMAP=false
+1 -1
View File
@@ -9,7 +9,7 @@ GATEWAY_ENDPOINT=http://master-app-api:4100/graphql
PRESHARED_GATEWAY_KEY=saweb_key
# The NODE_ENDPOINT is used at team creation and is where other components will search for the team
NODE_ENDPOINT=http://host.docker.internal:4100/
NODE_ENDPOINT=http://localhost:4100/
# Storage Configuration
STORAGE_PROVIDER=Minio
-4
View File
@@ -6,10 +6,6 @@ MONGO_URL=mongodb://mongo/users
GATEWAY_ENDPOINT=http://master-app-api:4100/graphql
USERS_API_PRESHARED=users_key
GENERATE_SOURCEMAP=true
ERROR_LOG=true
INFO_LOG=true
AUTH0_DOMAIN=superalgos.eu.auth0.com
AUTH0_AUDIENCE=https://auth-dev.superalgos.org
AUTH0_ISSUER=https://superalgos.eu.auth0.com/
+5 -4
View File
@@ -14,10 +14,11 @@ DEFAULT_BALANCE_ASSET_B=0.001
# Kubernetes configuration
GATEWAY_ENDPOINT_K8S=http://localhost:4100/graphql
CLONE_EXECUTOR_IMAGE=superalgos/clone-executor:1.0.25
CLUSTER_NAME=microk8s-cluster
CLONE_EXECUTOR_IMAGE=superalgos/clone-executor:1.0.30
CLUSTER_SERVER=https://kubernetes:16443
CERTIFICATE_AUTHORITY_DATA=LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lKQU5LRmNnK2hiS0xpTUEwR0NTcUdTSWIzRFFFQkN3VUFNQlF4RWpBUUJnTlYKQkFNTUNURXlOeTR3TGpBdU1UQWVGdzB4T1RBMk1qQXhNak0yTURSYUZ3MDBOakV4TURVeE1qTTJNRFJhTUJReApFakFRQmdOVkJBTU1DVEV5Tnk0d0xqQXVNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DCmdnRUJBTXBTSFhlZjFZSTRJR1UyeUlNNVM4THRxWTMxNklQczVnNGxORVlCV0wrME1mMXhBRURHRU0vaW4reTAKMkZ0QUFKWnhybWZ3UEpSTVozQ2tMMysxTnJxVjFtQW1wRkE5cDcxZXlOYmpuMmk2N0Y0N2MyeldGNlBTc0ZlYwowVUlmRklWaE9wWmgvUTN0WUQvZlQveEJlOTE2Wmd2eVY0TThCL1BGY2xKbWUyM1VTMHB3RGZObFpmc2FsQzhpCkVCc2pQYURrMThucng2bDVZTWF4UENyNHRnSWc2WENvQm9wS1l5UzNpZUtSSzh2Qnhyb3drN1pHWWJMUm1udHUKZUU4b1Z5RXpsUGVrNkJYQm1JRVp3MmJMeTNKeG42b3IyWmlZMEcrekRZKzYwN2dsaFVyNnhEM0QxUHUzMnozNQo0SldlbkJTem5wVjMvTDk0aUVFMEpsdG9xS3NDQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRkRERzhjUG5iZmIyCnd2cXBXSzdEYzlpckt3RnpNQjhHQTFVZEl3UVlNQmFBRkRERzhjUG5iZmIyd3ZxcFdLN0RjOWlyS3dGek1BOEcKQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBS1Bwclp6bnhaZEtuUUc1U3duSgpwWDBsditNNFF0R04zMDZwamxycTFtbWY2WXEwRDl5bEZ2WFRmNUtTWXZ0VGNaenorV1lReGNrc1JtUkIvOERjCjZnQ2hLSHFsV1NIV3FHcU94T1RQVFYvYktOd0NmY1BmaS81YzlFd0NtdjBndlA1Y0MxaTdWMUMxSEoxN0UwY0EKSzVEdytJMFd0Ky9kRWJXdnVhRStmcDBKT3hsdllMUGdkZlBoTnliL2lScDYzdHJudEhjdy9MOTEyM2xpMHF1aQo2VUJUZzFFYnR1VDZSVitsK2d5NkIvaENERG9IaUJRdnM3VmNqVXNaN1ZNUlpkckdlY0U5R3Q5Nkx2N0tNZ2lNCmQ4eFZXVGg5MnArU2lEem1vNnY1WVFvTHNqU25jK1NMK09jN2JsODRVSTFTNk1CVExSa0tRb0d6L0tPLzNrRkUKT08wPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
CLUSTER_NAME=microk8s-cluster
CERTIFICATE_AUTHORITY_DATA=
CONTEXT_NAME=microk8s-cluster
USER_NAME=admin
USER_PASSWORD=MGJmZDhZd3RnaGNyc3NqNGZZd3o1NzczazRJMnBtUWhuNGRvRXdIZXdvMD0K
USER_PASSWORD=
+1 -1
View File
@@ -15,7 +15,7 @@ TEAMS_API_URL=http://teams-api:4001/graphql
USERS_API_URL=http://users-api:4000/graphql
EVENTS_API_URL=http://events-api:4005/graphql
KEYVAULT_API_URL=http://keyvault-api:4002/graphql
NOTIFICATIONS_API_URL=http://notifications-api:4004/graphql
NOTIFICATIONS_API_URL=http://notifications-api:4006/graphql
OPERATIONS_API_URL=http://clones-api:4003/graphql
LOGS_API_URL=http://logs-api:4007/graphql
STRATEGIZER_API_URL=http://strategizer-api:4008/graphql
+1 -1
View File
@@ -1,5 +1,5 @@
NODE_ENV=production
PORT=4004
PORT=4006
PRESHARED_GATEWAY_KEY=notifications_key
GENERATE_SOURCEMAP=false
-4
View File
@@ -6,10 +6,6 @@ MONGO_URL=mongodb://mongo/users
GATEWAY_ENDPOINT=http://master-app-api:4100/graphql
USERS_API_PRESHARED=users_key
GENERATE_SOURCEMAP=true
ERROR_LOG=true
INFO_LOG=true
AUTH0_DOMAIN=superalgos.eu.auth0.com
AUTH0_AUDIENCE=https://auth-local.superalgos.org
AUTH0_ISSUER=https://superalgos.eu.auth0.com/
-3
View File
@@ -1,3 +0,0 @@
{
"presets": ["env", "stage-2"]
}
+1060 -3467
View File
File diff suppressed because it is too large. Load diff
+17 -19
View File
@@ -12,32 +12,30 @@
"url": "https://github.com/Superalgos/MasterApp/issues"
},
"homepage": "https://github.com/Superalgos/MasterApp#readme",
"main": "index.js",
"main": "src/index.js",
"scripts": {
"start": "nodemon --exec babel-node --presets env,stage-2 src/index.js",
"start": "nodemon src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-2": "^6.24.1",
"nodemon": "^1.18.10"
"nodemon": "1.19.1"
},
"dependencies": {
"apollo-link": "^1.2.3",
"apollo-link-context": "^1.0.9",
"apollo-link-http": "^1.5.5",
"apollo-server-express": "^2.1.0",
"apollo-link": "1.2.12",
"apollo-link-context": "1.0.18",
"apollo-link-http": "1.5.5",
"apollo-server-express": "2.6.4",
"axios": "0.19.0",
"cors": "^2.8.4",
"body-parser": "1.19.0",
"dotenv": "8.0.0",
"express": "^4.16.3",
"express-jwt": "^5.3.1",
"graphql": "^14.0.2",
"graphql-tools": "^4.0.0",
"jwks-rsa": "^1.3.0",
"lodash.merge": "^4.6.1",
"node-fetch": "^2.2.0",
"winston": "^3.1.0"
"esm": "3.2.25",
"express": "4.17.1",
"express-jwt": "5.3.1",
"graphql": "14.3.1",
"graphql-tools": "4.0.5",
"jwks-rsa": "1.5.1",
"lodash.merge": "4.6.1",
"node-fetch": "2.6.0",
"winston": "3.2.1"
}
}
+220
View File
@@ -0,0 +1,220 @@
import express from 'express'
import 'dotenv/config'
import { ApolloServer, ForbiddenError } from 'apollo-server-express'
import { mergeSchemas } from 'graphql-tools'
import jwt from 'express-jwt'
import jwksRsa from 'jwks-rsa'
import axios from 'axios'
import { createTransformedRemoteSchema } from './createRemoteSchema'
import { teams, events, operations } from './links'
import logger from './logger'
import bodyParser from 'body-parser'
async function getUserId (authId) {
try {
const userData = await axios({
url: process.env.USERS_API_URL,
method: 'post',
headers: {
preshared: process.env.USERS_API_PRESHARED
},
data: {
query: `
{
userByAuthId(authId: "${authId}")
{
id
}
}
`
}
})
return userData.data.data.userByAuthId.id
} catch (error) {
return (error)
}
}
async function run () {
const transformedKeyVaultSchema = await createTransformedRemoteSchema(
'keyVault_',
process.env.KEYVAULT_API_URL,
process.env.KEYVAULT_API_PRESHARED)
const transformedTeamsSchema = await createTransformedRemoteSchema(
'teams_',
process.env.TEAMS_API_URL,
process.env.TEAMS_API_PRESHARED)
const transformedUsersSchema = await createTransformedRemoteSchema(
'users_',
process.env.USERS_API_URL,
process.env.USERS_API_PRESHARED)
const transformedEventsSchema = await createTransformedRemoteSchema(
'events_',
process.env.EVENTS_API_URL,
process.env.EVENTS_API_PRESHARED)
const transformedOperationsSchema = await createTransformedRemoteSchema(
'operations_',
process.env.OPERATIONS_API_URL,
process.env.OPERATIONS_API_PRESHARED)
const transformedNotificationsSchema = await createTransformedRemoteSchema(
'notifications_',
process.env.NOTIFICATIONS_API_URL,
process.env.NOTIFICATIONS_API_PRESHARED)
const transformedLogsSchema = await createTransformedRemoteSchema(
'logs_',
process.env.LOGS_API_URL,
process.env.LOGS_API_PRESHARED)
const transformedStrategizerSchema = await createTransformedRemoteSchema(
'strategizer_',
process.env.STRATEGIZER_API_URL,
process.env.STRATEGIZER_API_PRESHARED)
const transformedCockpitSchema = await createTransformedRemoteSchema(
'cockpit_',
process.env.COCKPIT_API_URL,
process.env.COCKPIT_API_PRESHARED)
const transformedSAWeb = await createTransformedRemoteSchema(
'web_',
process.env.SAWEB_API_URL,
process.env.SAWEB_API_PRESHARED)
var schemas = []
var resolvers = {}
if (transformedTeamsSchema) {
schemas.push(transformedTeamsSchema)
if (transformedUsersSchema && transformedEventsSchema && transformedStrategizerSchema) {
schemas.push(teams.linkSchemaDefs)
resolvers = Object.assign(resolvers, teams.resolver(transformedUsersSchema, transformedEventsSchema, transformedStrategizerSchema))
}
}
if (transformedUsersSchema) {
schemas.push(transformedUsersSchema)
}
if (transformedEventsSchema) {
schemas.push(transformedEventsSchema)
if (transformedUsersSchema && transformedTeamsSchema && transformedOperationsSchema) {
schemas.push(events.linkSchemaDefs)
resolvers = Object.assign(resolvers, events.resolver(transformedUsersSchema, transformedTeamsSchema, transformedOperationsSchema))
}
}
if (transformedKeyVaultSchema) {
schemas.push(transformedKeyVaultSchema)
}
if (transformedOperationsSchema) {
schemas.push(transformedOperationsSchema)
if (transformedTeamsSchema && transformedCockpitSchema) {
schemas.push(operations.linkSchemaDefs)
resolvers = Object.assign(resolvers, operations.resolver(transformedTeamsSchema, transformedCockpitSchema))
}
}
if (transformedNotificationsSchema) {
schemas.push(transformedNotificationsSchema)
}
if (transformedLogsSchema) {
schemas.push(transformedLogsSchema)
}
if (transformedStrategizerSchema) {
schemas.push(transformedStrategizerSchema)
}
if (transformedCockpitSchema) {
schemas.push(transformedCockpitSchema)
}
if (transformedSAWeb) {
schemas.push(transformedSAWeb)
}
const schema = mergeSchemas({
schemas,
resolvers
})
const app = express()
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use('/graphql',
jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 1,
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
}),
credentialsRequired: false,
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: [`RS256`]
}),
function (err, req, res, next) {
if (err.code === 'invalid_token') {
res.locals.error = err.message
}
return next()
}
)
app.use('/graphql', (req, res, next) => {
res.locals.userId = ''
if (req.user) {
getUserId(req.user.sub)
.then(data => {
res.locals.userId = data
next()
})
.catch(err => {
console.log(err)
next()
})
} else {
next()
}
})
const context = ({ req, res }) => {
if (res.locals.error) {
throw new ForbiddenError(res.locals.error)
}
const response = {
headers: Object.assign(
res.locals.userId ? { userId: res.locals.userId } : {},
req.headers.authorization ? { authorization: req.headers.authorization } : {},
req.headers.access_token ? { access_token: req.headers.access_token } : {}
)
}
return response
}
const server = new ApolloServer({
schema,
context,
formatError: error => {
logger.error('An error ocurred inside a module: %s', error.message)
return error.message
},
formatResponse: response => {
logger.debug('Response from Apollo Server: ' + response)
return response
},
playground: {
settings: {
'editor.theme': 'dark',
'editor.cursorShape': 'line'
}
}
})
server.applyMiddleware({ app, cors: { origin: true, credentials: true, methods:'GET,PUT,POST,DELETE,OPTIONS'}})
app.listen(4100)
logger.info(`Server running. Open ${process.env.GRAPHQL_API_URL} to run queries.`)
}
try {
run()
} catch (e) {
logger.error(`An general error occured while running the app: ${e}, details: ${e.message}, stack: ${e.stack}`)
}
+2 -221
View File
@@ -1,221 +1,2 @@
import express from 'express'
import cors from 'cors'
import 'dotenv/config'
import { ApolloServer, ForbiddenError } from 'apollo-server-express'
import { mergeSchemas } from 'graphql-tools'
import jwt from 'express-jwt'
import jwksRsa from 'jwks-rsa'
import axios from 'axios'
import { createTransformedRemoteSchema } from './createRemoteSchema'
import { teams, events, operations } from './links'
import logger from './logger'
import bodyParser from 'body-parser'
async function getUserId (authId) {
try {
const userData = await axios({
url: process.env.USERS_API_URL,
method: 'post',
headers: {
preshared: process.env.USERS_API_PRESHARED
},
data: {
query: `
{
userByAuthId(authId: "${authId}")
{
id
}
}
`
}
})
return userData.data.data.userByAuthId.id
} catch (error) {
return (error)
}
}
async function run () {
const transformedKeyVaultSchema = await createTransformedRemoteSchema(
'keyVault_',
process.env.KEYVAULT_API_URL,
process.env.KEYVAULT_API_PRESHARED)
const transformedTeamsSchema = await createTransformedRemoteSchema(
'teams_',
process.env.TEAMS_API_URL,
process.env.TEAMS_API_PRESHARED)
const transformedUsersSchema = await createTransformedRemoteSchema(
'users_',
process.env.USERS_API_URL,
process.env.USERS_API_PRESHARED)
const transformedEventsSchema = await createTransformedRemoteSchema(
'events_',
process.env.EVENTS_API_URL,
process.env.EVENTS_API_PRESHARED)
const transformedOperationsSchema = await createTransformedRemoteSchema(
'operations_',
process.env.OPERATIONS_API_URL,
process.env.OPERATIONS_API_PRESHARED)
const transformedNotificationsSchema = await createTransformedRemoteSchema(
'notifications_',
process.env.NOTIFICATIONS_API_URL,
process.env.NOTIFICATIONS_API_PRESHARED)
const transformedLogsSchema = await createTransformedRemoteSchema(
'logs_',
process.env.LOGS_API_URL,
process.env.LOGS_API_PRESHARED)
const transformedStrategizerSchema = await createTransformedRemoteSchema(
'strategizer_',
process.env.STRATEGIZER_API_URL,
process.env.STRATEGIZER_API_PRESHARED)
const transformedCockpitSchema = await createTransformedRemoteSchema(
'cockpit_',
process.env.COCKPIT_API_URL,
process.env.COCKPIT_API_PRESHARED)
const transformedSAWeb = await createTransformedRemoteSchema(
'web_',
process.env.SAWEB_API_URL,
process.env.SAWEB_API_PRESHARED)
var schemas = []
var resolvers = {}
if (transformedTeamsSchema) {
schemas.push(transformedTeamsSchema)
if (transformedUsersSchema && transformedEventsSchema && transformedStrategizerSchema) {
schemas.push(teams.linkSchemaDefs)
resolvers = Object.assign(resolvers, teams.resolver(transformedUsersSchema, transformedEventsSchema, transformedStrategizerSchema))
}
}
if (transformedUsersSchema) {
schemas.push(transformedUsersSchema)
}
if (transformedEventsSchema) {
schemas.push(transformedEventsSchema)
if (transformedUsersSchema && transformedTeamsSchema && transformedOperationsSchema) {
schemas.push(events.linkSchemaDefs)
resolvers = Object.assign(resolvers, events.resolver(transformedUsersSchema, transformedTeamsSchema, transformedOperationsSchema))
}
}
if (transformedKeyVaultSchema) {
schemas.push(transformedKeyVaultSchema)
}
if (transformedOperationsSchema) {
schemas.push(transformedOperationsSchema)
if (transformedTeamsSchema && transformedCockpitSchema) {
schemas.push(operations.linkSchemaDefs)
resolvers = Object.assign(resolvers, operations.resolver(transformedTeamsSchema, transformedCockpitSchema))
}
}
if (transformedNotificationsSchema) {
schemas.push(transformedNotificationsSchema)
}
if (transformedLogsSchema) {
schemas.push(transformedLogsSchema)
}
if (transformedStrategizerSchema) {
schemas.push(transformedStrategizerSchema)
}
if (transformedCockpitSchema) {
schemas.push(transformedCockpitSchema)
}
if (transformedSAWeb) {
schemas.push(transformedSAWeb)
}
const schema = mergeSchemas({
schemas,
resolvers
})
const app = express()
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use('/graphql',
jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 1,
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
}),
credentialsRequired: false,
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: [`RS256`]
}),
function (err, req, res, next) {
if (err.code === 'invalid_token') {
res.locals.error = err.message
}
return next()
}
)
app.use('/graphql', (req, res, next) => {
res.locals.userId = ''
if (req.user) {
getUserId(req.user.sub)
.then(data => {
res.locals.userId = data
next()
})
.catch(err => {
console.log(err)
next()
})
} else {
next()
}
})
const context = ({ req, res }) => {
if (res.locals.error) {
throw new ForbiddenError(res.locals.error)
}
const response = {
headers: Object.assign(
res.locals.userId ? { userId: res.locals.userId } : {},
req.headers.authorization ? { authorization: req.headers.authorization } : {},
req.headers.access_token ? { access_token: req.headers.access_token } : {}
)
}
return response
}
const server = new ApolloServer({
schema,
context,
formatError: error => {
logger.error('An error ocurred inside a module: %s', error.message)
return error.message
},
formatResponse: response => {
logger.debug('Response from Apollo Server: ' + response)
return response
},
playground: {
settings: {
'editor.theme': 'dark',
'editor.cursorShape': 'line'
}
}
})
server.applyMiddleware({ app, cors: { origin: true, credentials: true, methods:'GET,PUT,POST,DELETE,OPTIONS'}})
app.listen(4100)
logger.info(`Server running. Open ${process.env.GRAPHQL_API_URL} to run queries.`)
}
try {
run()
} catch (e) {
logger.error(`An general error occured while running the app: ${e}, details: ${e.message}, stack: ${e.stack}`)
}
require = require('esm')(module)
module.exports = require('./app.js')