| @@ -0,0 +1,13 @@ | |||||
| { | |||||
| "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" | |||||
| } | |||||
| @@ -0,0 +1,12 @@ | |||||
| { | |||||
| "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" | |||||
| } | |||||
| @@ -0,0 +1,127 @@ | |||||
| const express = require('express'); | |||||
| const path = require('path'); | |||||
| const {google} = require('googleapis'); | |||||
| var admin = require("firebase-admin"); | |||||
| var SCOPES = 'https://www.googleapis.com/auth/firebase.messaging'; | |||||
| const port = 3333; | |||||
| var dirPath = path.join(__dirname , 'fcm_key'); | |||||
| var keyPath = require('./keypath.json'); | |||||
| for(key in keyPath){ | |||||
| var data = keyPath[key]; | |||||
| var jsonPath = path.join(dirPath , data.PATH); | |||||
| var adminAuthToken = require(jsonPath); | |||||
| admin.initializeApp({ | |||||
| credential: admin.credential.cert(adminAuthToken), | |||||
| databaseURL: data.DB_URL | |||||
| },key); | |||||
| } | |||||
| const app = express(); | |||||
| app.use(express.json({limit: '50mb'})); | |||||
| app.use(express.urlencoded({limit: '50mb' ,parameterLimit: 1000000 , extended : true})); | |||||
| app.post('/sendFcm',async function(req,res){ | |||||
| var dataReq = req.body; | |||||
| var application = dataReq.application; | |||||
| var fcm = admin.app(application); | |||||
| var tokens = ["ckATQ13PdBc:APA91bF_RbWjE8gFcWoWqyRwLuh7GtDyQnx-l3DCVWyfEyWCXBgMWeK6Cca4FW2Wjltgwd5Sck7kI-0L9vR0i1MwRMbqu1--2AaMFaU9G6cwbkt0DCGI8nJ-JpMmShjA1kMHDMa-8BUI", | |||||
| "e3S17M3ZMjU:APA91bEEb2otaSUV7Vu0hRxVCiCawxHXnc1E_PV1nxvSJOSxAL90SYGIOy_zbrsBJP-ewD0OgRQ44rfFDHF_ROQj3GKH8T5DfhUHeb4xPeVWc16kyF_NRyUvx3G_RDqgX4RYMKjfg6gs"] | |||||
| var message = { | |||||
| tokens : tokens, | |||||
| notification :{ | |||||
| title: 'MAKANM KANA', | |||||
| body: 'EVERIBADINUW.' | |||||
| }, | |||||
| data : { | |||||
| "click_action":"FLUTTER_NOTIFICATION_CLICK", | |||||
| "message_id":"1", | |||||
| "route":"/Pilihan", | |||||
| "type":"NOTIFICATION" | |||||
| } | |||||
| } | |||||
| fcm.messaging().sendMulticast(message) | |||||
| .then((response) => { | |||||
| console.log(response); | |||||
| if (response.failureCount > 0) { | |||||
| const failedTokens = []; | |||||
| response.responses.forEach((resp, idx) => { | |||||
| console.log('AAAA'); | |||||
| if (!resp.success) { | |||||
| failedTokens.push(registrationTokens[idx]); | |||||
| } | |||||
| }); | |||||
| console.log('List of tokens that caused failures: ' + failedTokens); | |||||
| } | |||||
| return res.status(200).json({"STATUS" : "SUKSES" ,"DATA" : response}); | |||||
| }).catch((error) => { | |||||
| console.log('ERROR'); | |||||
| return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||||
| }); | |||||
| // var token = dataReq["to"]; | |||||
| // if(token.length > 0){ | |||||
| // // One Device | |||||
| // if(typeof token == 'string'){ | |||||
| // var message = { | |||||
| // token : token, | |||||
| // notification : dataReq.notification, | |||||
| // data : dataReq.data | |||||
| // } | |||||
| // fcm.messaging().send(message) | |||||
| // .then((response) => { | |||||
| // // Response is a message ID string. | |||||
| // return res.status(200).json({"STATUS" : "SUKSES" , "DATA" : response}); | |||||
| // }) | |||||
| // .catch((error) => { | |||||
| // return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||||
| // }); | |||||
| // } | |||||
| // // Multi Devices | |||||
| // else{ | |||||
| // console.log(token); | |||||
| // var tokens = ["e3S17M3ZMjU:APA91bEEb2otaSUV7Vu0hRxVCiCawxHXnc1E_PV1nxvSJOSxAL90SYGIOy_zbrsBJP-ewD0OgRQ44rfFDHF_ROQj3GKH8T5DfhUHeb4xPeVWc16kyF_NRyUvx3G_RDqgX4RYMKjfg6gs", | |||||
| // "dN1qcm6jr9M:APA91bFuXr5tx0tVqKYqGxWDjaNm8NrbzO2hFpK6ylQHxQzZMnTjN4GtT3MNOXRkU-Mj98A9xMmJy715IQJX_aQb_7PqmzNchegeDOTJn86zcnTMlkqU6IKJaFkU2CRsZU_bsHXDeDoX"] | |||||
| // var message = { | |||||
| // tokens : tokens, | |||||
| // notification : data.notification, | |||||
| // data : dataReq.data | |||||
| // } | |||||
| // fcm.messaging().sendMulticast(message) | |||||
| // .then((response) => { | |||||
| // console.log(response); | |||||
| // if (response.failureCount > 0) { | |||||
| // const failedTokens = []; | |||||
| // response.responses.forEach((resp, idx) => { | |||||
| // console.log('AAAA'); | |||||
| // if (!resp.success) { | |||||
| // failedTokens.push(registrationTokens[idx]); | |||||
| // } | |||||
| // }); | |||||
| // console.log('List of tokens that caused failures: ' + failedTokens); | |||||
| // } | |||||
| // return res.status(200).json({"STATUS" : "SUKSES" ,"DATA" : response}); | |||||
| // }).catch((error) => { | |||||
| // console.log('ERROR'); | |||||
| // return res.status(404).json({"STATUS" : "ERROR" ,"DATA" : error}); | |||||
| // }); | |||||
| // } | |||||
| // } | |||||
| }); | |||||
| app.listen(port,()=> console.log(`Listening into port ${port}`)); | |||||
| @@ -0,0 +1,10 @@ | |||||
| { | |||||
| "HRIS" : { | |||||
| "PATH" : "hris-firebase-service.json", | |||||
| "DB_URL" : "https://hris-a1c6c.firebaseio.com" | |||||
| }, | |||||
| "TBS" : { | |||||
| "PATH" : "TBS.json", | |||||
| "DB_URL" : "AYEYAYEE" | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,16 @@ | |||||
| { | |||||
| "name": "fcm-node-helper", | |||||
| "version": "1.0.0", | |||||
| "description": "", | |||||
| "main": "index.js", | |||||
| "scripts": { | |||||
| "test": "echo \"Error: no test specified\" && exit 1" | |||||
| }, | |||||
| "author": "", | |||||
| "license": "ISC", | |||||
| "dependencies": { | |||||
| "express": "^4.17.1", | |||||
| "firebase-admin": "^9.0.0", | |||||
| "googleapis": "^59.0.0" | |||||
| } | |||||
| } | |||||