@@ -8,11 +8,11 @@ module.exports = { | |||
watch: true, | |||
time: true, | |||
env: { | |||
PORT: 14003, | |||
// PORT: 14003, | |||
NODE_ENV: "development", | |||
}, | |||
env_production: { | |||
PORT: 14003, | |||
// PORT: 14003, | |||
NODE_ENV: "production", | |||
}, | |||
}, | |||
@@ -0,0 +1,12 @@ | |||
{ | |||
"type": "service_account", | |||
"project_id": "thamringroup-574b9", | |||
"private_key_id": "25f4cc77dbf77d0f728f73a75f081c7f5dfee892", | |||
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDY5muFrHol3DYW\nyYjJEzuC2xig6gGetxLyf9enVFRpvKuJKcJ3ZNwhzC9LRs6duniUtzaphb/RfRRE\nauczrFofm0LRU9SZSW9MU/m/6ZQpNjJIP621SOyh7QDbuIZ90intv9L+hZjhsVDq\naEGLa28aekuTXWWbkXnYHynflFv2NwJAB0zOVe8Lts/9fbA3gQSJr5RRFbV2peDB\n/XvpyzqRzLW6M3PDqBItmDjKeOFMRkXYCnEkMyOGKy0hEG9eHoixOChX52X1aiX0\nrcVNiDxo37zq3DlnQxzd0C5EjUr/Fd5FXtvYQMA2ZvTTJ7YOd0aq0L+5M3APxIKv\nH6emIcb9AgMBAAECggEACribAc9pyz4fDfx2DoBXnaB6+hXkW3DFAZJoTwz9Tiuw\nAUE8lkkN6NLDrLF04Y7XynwNj468/EZ148AyqkHKQ6Eu9JNeS8RkOWOLkbJNQJs9\nRt0fluQiTt+yPj9uUGunZxPSAq2JBhuND8Ue+5ylcCuG2aN7yVcvwgsfof2el7p+\n0+kzAnrOo2qYcRAFa4UoVRxtRFy+60PIsG7fze0GgKGSoeoJ/LoFstY6bZXeOMPz\n+mTtnplxeOp6A0r7UFXFvIYEo985tK8lxPwmFMCzfpJrEsk9Zh7mT1Ue2QwLFerK\nVqGbc26H09zezfG5yNPpJoqCnClmP9QSfT5S/+R/KQKBgQD9ZR5d4Wwu+GTN84Hi\nAT2Y42VjndCaQYUz6ZiptD81Lw1cyQ4O6+cU6I7Mcb02cbO2vWxuI8EauN+smh7Y\nACjkyXNZ9Bmla/8vZ43U1za+ydlPDabxEOqQ789r2+ai6Ezke3R6awjwzWrk6w0N\n15gwimoePcxtPDpl606RdTG2pQKBgQDbIUEsOQYIUH6poPJy5muu2oaQINvpsKFQ\nd0CCaHrYUlY/Ym4m+hcU3sg+sMjoCvFVBmFzLzKn7t2RjJnjwrzpzPwocVdPu8aj\nOG87DSGj7XCGJgu+/liQtKRKaCi6/h5qi8xiLJ8we6A2pPLr7DckvLPoJrEV8igZ\n1EMujcE3eQKBgG5t8AL35568r6m1kof9BGwpxZjZQPzIyxUpm1dx7w3teIRUNqU4\nF5fcFcdxVgVxHeHowWVqfZB4uznMXN7Diw7R4Ex2ferCmw58santNLWG4AZ8q6Fp\nPuB1Mk8OIYAjfscgKk3jcZ0H2Kr06NZ8e53D5KVTR1Dfq4+ZMb9gdI7lAoGBAMvy\nU3oZSKgMYxb1mTGfi7Gd6YfTTVpe7oS5uOym2U7ksykjL2pPcZQXFUBjwVlWde6w\nlZpi3z61brq8pa353WGtSzNI6f5nwiS/rabEPf8YSpZQarZEe6GSvyYRc3c2dJCt\ntHfbF/5D0YWKWB2EKH6ksrzq5f6K9w+zIyP9A0vhAoGAFaPM4ud/uUgUgSskOvAw\n3OcKZIEsWYwO74+xcrMiS+CEmbtSxGYpXrdmPKY3Na/Lmrt0dC40vmEVzuC6AWjv\nQAtgbVNJg3UgNxeT9uFUsC0LUCKrdRdzoqSlaOBJGefbUL0T2L9rVnTtehhoJ8wr\nVRXidhGT+MqG6h0BmUp0TmM=\n-----END PRIVATE KEY-----\n", | |||
"client_email": "firebase-adminsdk-2n42m@thamringroup-574b9.iam.gserviceaccount.com", | |||
"client_id": "113759880668477182986", | |||
"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/firebase-adminsdk-2n42m%40thamringroup-574b9.iam.gserviceaccount.com" | |||
} |
@@ -1,12 +0,0 @@ | |||
{ | |||
"type": "service_account", | |||
"project_id": "hris-a1c6c", | |||
"private_key_id": "dc2149cc4504c661bdcbd8d9e64a0f30a8ae141b", | |||
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC1PBVqOyy6Hcva\njCYFJdTVGU6ERnsZaycnC28f/toiN4GJwCU+ZO7orXQwgwDHUHCz3j75IU2G5xy4\n/M3+3mM3Q7czj+3YB5n1YnenrUn1zNtovekXXV1kNViGd8uyfqPPUtwLLzzlg36C\n20bBLml2Oa0QR/s14M4bwEKclewsPcguJG+jVMtk43MnMSfkV0M+pjY44IHv40KW\no8H991864mlSxVrXZzOt7jTMw4nQNXUA2X2wq4lwvSnyg3bpsxwr7UBvLIyFZEqt\n74F+/BsEcCuOqKBCS4i0KVm7zJRomY/R4kwAbFA2PtKPMxMQv7yRIWxJOgyEtsuI\nSG0+e7vvAgMBAAECggEAV7X/8T05TMvd3GPmhKhGBGouf0LzEZ6zwKg+fEAlhtjR\nJv8opzVHELHdoRrNtiiemtZtKLou4KKaWobzFS3A2764e8plBB/NqZ4hpbNur3iZ\nGWyL0iR77eMJeG6i1TyH/+8skncmpDdK8363FAhnvvFz6gTENdOaPIEEW+8M8W2V\ngbwKhXiiUa4Yj65ucGxPBUKrgvsNO6/OCxaglrsMf3AS9o0GPRko9g7bs19TLnoG\nT6gdvQxg+zi26JM0TsNnkXX32IsN+r1JOx+8weCH+FgPCvFja3lcgPFB+Z3Wc4X3\nDNBTIKoUkHlmptARGzXPTWIM5W7JGRN59oicKXcTCQKBgQDvIVeMx6xMWKcdx95N\na2yhPOcl58Q6N+OQXj4E1J+fSiYSasxLDdmuL2madO4c2ajAR7EuPaz6waNW2/XS\nXXM2Lsyeg46UIoDE+RNNQQQ7aCSOu51WfmADsBlRxQWc4qaNH3l/sPsiBh816W2v\ncUnEbLYmbvxThvg1+GiWUDtq9wKBgQDCBSgOlobSFyQAMK0HTR6yaT0LtgI6e+dr\nhmmsFoDb3fUUyRFzXpTOJ2cA5xUEw8mwpVS9SiDvxr1wn+F3vIvYocbXY2hKzbOb\nhyDyqYYBZdaf7YKihZ+wujJJQu1OByy8TRyy4L04ziad4n9V2eGYaFX2ZjL/7TCR\n+GBYLuFAyQKBgQCeYucqR9bHerC1+Pw1K0H4Se6QHMLMDNidds59RJe1Wdd9u181\nFydnR+Aaffh5A3HSaanhhthb/oXBsk9P1rXI3ZaKJ3j4hSHlVVSDhtzWvFP6dinw\ncCQITUt37ZeaIkVOk9pVyVONZaCmhMYxvket4pODQV+/s1YT6UTcyqeQYQKBgQCv\nhSqvx80/0l9nLKHbsRDMJhhrt8RcVCsPQxHl9JWuUiWdICkBTdcgiNTOJD8HiHe1\nrlvywlT5lblbYcf/IjsBR5ky0WNQCLcrRBuya1oneZGoLJ25mVjV8Bv92uYDaMo3\nryr/SADmmtikjHrVl75WukzKE7qffFwsMZ43KHHuwQKBgQCEQO0++OURsJjiTsdt\nEclY4+4sJmjf1wV0w80Qxh6CUEZvO1vo71y4oWqVAY5vDyasSKCyC8O4hmDeeTni\n+O0eQl8S8fOCZTOLGIx6I+BnlsJuXtj4j2x3z4zQm70wU/LcONXAVxdRiXPWECAK\nPh6dTxJTT8TeXcCM+hswW4ZVNg==\n-----END PRIVATE KEY-----\n", | |||
"client_email": "firebase-adminsdk-9i92r@hris-a1c6c.iam.gserviceaccount.com", | |||
"client_id": "103796818750526974337", | |||
"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/firebase-adminsdk-9i92r%40hris-a1c6c.iam.gserviceaccount.com" | |||
} |
@@ -1,13 +0,0 @@ | |||
{ | |||
"type": "service_account", | |||
"project_id": "thamringroup-574b9", | |||
"private_key_id": "3caeeed6e427e663bff41b1ec31ef19f615190e4", | |||
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCNySDYC+/KG1ee\n1J8MoeJgfWUYFdqwCqi6ua45Grx/d3T4/asu4TlTdEEpJ8ovTFLYD1gTBZfAaV7P\nwe/BRsnNdYOabeDqxUn4Hhx0iOoSYbRB///C7Mol1QTpE1CWEEZNWtG9NA1fbStN\nzCo104H3mam6CzazbEClIhfRjLuGXFKjsoJHedLcKnQRc6yeyY3TNGfXrdOuAgwq\nCzIVw8lFYCicBq7IoP2YHpEF1/Rm4nkFq1HGsDnk17nmct6TS8SMAE6spVYyk/Ic\nqXO7eCoMATv6LozxXfuIi8AifqTB+1VpRdmwNKokdhWreD56P3Z0bBQWqeuSczz7\nFNiPADO3AgMBAAECggEAAoVWII4FxpggQXvfE0Br+YwBMiGhVvC5k0Hqrd7V0lMm\nl0HoIaTYRuDFD9BCff8wMeGdjtw4mHxgtsNOwFoopSiDtuLHoiTwoO9+hGvl8+Tp\nnL39p1LCcIdbCpg3UWCBf3qWSnQUdy/ftAbMCuzzXWc0AOsvuJaIh7PiRiC0bNN/\nzbmkimV6r5J0PU0oluro62NwkQDriQMAqVv4wwIYzBu7/1mMzRwsS6UjqBaSpciH\n4dAN0ra79KHxf778egFEQktQzhfvt2IxrOM1ZejeEQgLU1ao+iIcu0ktAWhhTT99\n09ffI8d43u8P2kmveUa3Mm5bqUjJoED9EvmiX4XP4QKBgQDIXo97Vv9u8TSGh0ue\nMWsbTbI96sTYxvGJUqp9Db/w8m0TIPpqD5AUV2hjEg3kJp7V65XimhRd3W6zQ6op\nBu5U1mJTEqWOuRT9smuBDinAYM7Ty9NF7zxw/jGU87T4T/g1M8C+1AijL7lTZLzF\nqqCwcVhavKMnPUn3+Hia39wYqQKBgQC1JqzxfNI1z/5+bDutkIs3DD2JtQrIvKzW\nP+fuSnDcf00NPsXBBMgwCaVfKP7OhmYSjG6gZSuTOeBts6N8eI9iGKpldAwJXBM+\nFghdeLHP/EmeAzWutd+0EKf30cSYqm8SeEnVEhW89UeHAtAtMnIdBt2oB5Ucg1cH\nJjj9XTHFXwKBgDc4ABjAoAJmDNCqRoehHOBYaC+yHG+VXAk5M+zktinj1XV5GCnU\ngiNo90aeOh/PGOThWNwrFEPN+20Bz8ogs9vDfTNhpyiPDx7fZcsaKR1wUG+D84SJ\nasHE+8sN4qiv+TpIOe0dKAg45bz6vR9IZ6JYij3vUJNGy7S/0BT2boSJAoGAXpF7\nNXJJNyiHHi6YlQphcvJj6dDmeVbuD8c66A5ajvGyItkDWbmKXHGcsGnxY5WMEeDY\nG8nVDr3nKL3f+iniCH8B7YbAhd5YeU/9O/a3NPHq6J+aVcPCrfkIBvquXFiVNZow\nSRhw2r1dguD4FrBAHGEqM/8JW+JA+417sOEHC5cCgYBNz/4/OkgcxyLc0qn+/PiI\nAbfmTt7NDtcGCohRJnQ+aAC74j8IBhYlbTeMF4QchxflfN6mXF1atwABtezJdG4i\nx1PeigXHklnvjDXvzxAVlGx393LK1/cnUmKKPaDOdQM4NP6lkqN3jl47B9iA9JuZ\nA8Vux7on28WgCY6sN6Qucg==\n-----END PRIVATE KEY-----\n", | |||
"client_email": "firebase-adminsdk-2n42m@thamringroup-574b9.iam.gserviceaccount.com", | |||
"client_id": "113759880668477182986", | |||
"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/firebase-adminsdk-2n42m%40thamringroup-574b9.iam.gserviceaccount.com" | |||
} | |||
@@ -1,14 +1,16 @@ | |||
const express = require("express"); | |||
require('dotenv').config(); | |||
const path = require("path"); | |||
var admin = require("firebase-admin"); | |||
const port = process.env.PORT || 14003; | |||
var dirPath = path.join(__dirname, "fcm_key"); | |||
var keyPath = require("./keypath.json"); | |||
var data = require("./keypath.json"); | |||
const { messaging } = require("firebase-admin"); | |||
for (key in keyPath) { | |||
var data = keyPath[key]; | |||
//dijadiin 1 ThamrinGroup dan HRIS | |||
// for (key in keyPath) { | |||
var jsonPath = path.join(dirPath, data.PATH); | |||
var adminAuthToken = require(jsonPath); | |||
admin.initializeApp( | |||
@@ -16,9 +18,9 @@ for (key in keyPath) { | |||
credential: admin.credential.cert(adminAuthToken), | |||
databaseURL: data.DB_URL, | |||
}, | |||
key | |||
// key | |||
); | |||
} | |||
// } | |||
const app = express(); | |||
@@ -32,25 +34,54 @@ app.use( | |||
app.post("/sendFcm", async function (req, res) { | |||
try { | |||
var message = req.body; | |||
var fcm = admin.app(application.application); | |||
fcm | |||
.messaging() | |||
.sendMulticast(message) | |||
console.log(message); | |||
if(message){ | |||
messaging().sendMulticast(message) | |||
.then((response) => { | |||
// console.log(response.successCount + ' messages were sent successfully'); | |||
if (response.failureCount > 0) { | |||
const failedTokens = []; | |||
response.responses.forEach((resp, idx) => { | |||
if (!resp.success) { | |||
failedTokens.push(registrationTokens[idx]); | |||
} | |||
}); | |||
if(message.tokens){ | |||
const failedTokens = []; | |||
response.responses.forEach((resp, idx) => { | |||
if (!resp.success) { | |||
failedTokens.push(message.tokens[idx]); | |||
} | |||
}); | |||
console.log("Failed Fcm Notif",failedTokens); | |||
return res.status(400).json(response); | |||
} | |||
else{ | |||
return res.status(400).json({error:"Error sending FCM Notification!"}); | |||
} | |||
} | |||
return res.status(200).json(response); | |||
}) | |||
.catch((error) => { | |||
}).catch((error) => { | |||
return res.status(404).json(error); | |||
}); | |||
} | |||
else{ | |||
return res.status(404).json({error:"Message can't be empty!"}); | |||
} | |||
// var fcm = admin.app(application.application); | |||
// fcm | |||
// .messaging() | |||
// .sendMulticast(message) | |||
// .then((response) => { | |||
// if (response.failureCount > 0) { | |||
// const failedTokens = []; | |||
// response.responses.forEach((resp, idx) => { | |||
// if (!resp.success) { | |||
// failedTokens.push(registrationTokens[idx]); | |||
// } | |||
// }); | |||
// } | |||
// return res.status(200).json(response); | |||
// }) | |||
// .catch((error) => { | |||
// return res.status(404).json(error); | |||
// }); | |||
} catch (e) { | |||
console.log(e.message); | |||
return res.status(404).json(e.message); | |||
@@ -1,10 +1,4 @@ | |||
{ | |||
"HRIS" : { | |||
"PATH" : "hris-firebase-service.json", | |||
"DB_URL" : "https://hris-a1c6c.firebaseio.com" | |||
}, | |||
"ThamrinGroup" : { | |||
"PATH" : "thamringroup-574b9-firebase-adminsdk-2n42m-3caeeed6e4.json", | |||
"DB_URL" : "https://thamringroup-574b9.firebaseio.com" | |||
} | |||
"PATH" : "credentials.json", | |||
"DB_URL" : "https://thamringroup-574b9.firebaseio.com" | |||
} |
@@ -0,0 +1,10 @@ | |||
{ | |||
"HRIS" : { | |||
"PATH" : "hris-firebase-service.json", | |||
"DB_URL" : "https://hris-a1c6c.firebaseio.com" | |||
}, | |||
"ThamrinGroup" : { | |||
"PATH" : "thamringroup-574b9-firebase-adminsdk-2n42m-3caeeed6e4.json", | |||
"DB_URL" : "https://thamringroup-574b9.firebaseio.com" | |||
} | |||
} |
@@ -1,5 +1,5 @@ | |||
{ | |||
"name": "fcm-node-helper", | |||
"name": "fcm-sdk-hris", | |||
"version": "1.0.0", | |||
"description": "", | |||
"main": "index.js", | |||
@@ -9,8 +9,8 @@ | |||
"author": "", | |||
"license": "ISC", | |||
"dependencies": { | |||
"express": "^4.17.1", | |||
"firebase-admin": "^9.2.0", | |||
"googleapis": "^59.0.0" | |||
"dotenv": "^16.0.1", | |||
"express": "^4.18.1", | |||
"firebase-admin": "^10.2.0" | |||
} | |||
} |