From 170b6fcc33acfd4b42e3cecc34df439ecb94f3e1 Mon Sep 17 00:00:00 2001 From: --path Date: Mon, 22 Oct 2018 01:46:38 +0100 Subject: [PATCH] functions updated --- Firebase Hosting/.firebase/hosting.0.cache | 12 +++ Firebase Hosting/database.rules.json | 42 +++++++- Firebase Hosting/functions/index.js | 39 +++---- Firebase Hosting/functions/package.json | 4 +- Firebase Hosting/functions/yarn.lock | 2 +- Firebase Hosting/public/favicon.png | Bin 0 -> 4447 bytes Firebase Hosting/public/index.html | 97 ++++++++---------- .../public/orsteg_apps_harold_og_image.png | Bin 0 -> 21173 bytes Firebase Hosting/public/robots.txt | 4 + Firebase Hosting/public/sitemap.xml | 11 ++ Firebase Hosting/public/store/index.html | 57 +++++++--- 11 files changed, 167 insertions(+), 101 deletions(-) create mode 100644 Firebase Hosting/.firebase/hosting.0.cache create mode 100644 Firebase Hosting/public/favicon.png create mode 100644 Firebase Hosting/public/orsteg_apps_harold_og_image.png create mode 100644 Firebase Hosting/public/robots.txt create mode 100644 Firebase Hosting/public/sitemap.xml diff --git a/Firebase Hosting/.firebase/hosting.0.cache b/Firebase Hosting/.firebase/hosting.0.cache new file mode 100644 index 0000000..8648d0a --- /dev/null +++ b/Firebase Hosting/.firebase/hosting.0.cache @@ -0,0 +1,12 @@ +404.html,1526589291891,b7bab6b83fa074653ff28c8d2a64135d3434575f70a12ab3d3ba8080461b9537 +favicon.png,1539889144976,e897b793266fcb6c0ad80d280462a1248853348066c9a33e8eba95064a89cd4c +orsteg_apps_harold_og_image.png,1539889145004,6f110f19678772f87b42a9a4191a0dcc2f3a0f91342f61ff1c84ddeb05698771 +privacy_policy.html,1538443743080,35143676d4faa6f14acb49e7b1efbc79fef7af53b2b1d49ca27142f758bb3ebf +privacy_policy.txt,1538445275217,3f4b2d3b9a4672948c3b5a77af7b6b90b439d4f5da75d9313c3e140bbe4d2e75 +sitemap.xml,1540020198278,9170fd01fe0fedf999cdbdf2e0c93e9877eafdde03eb20423483b659bbda7268 +terms_and_conditions.html,1538443847592,b1deeae6b7ffb7a2c662460461fe97710e82979bfa5e3fb7e259ea0a641da604 +terms_and_conditions.txt,1538445397943,825a811236b1a4ba9937b3129d58054a8fba83c4e70cb0198cedc4bd399166da +featured_banner.png,1539889145000,92e6c05e89126e0d83dd787efd9231bfe576bd2c7e03aa3a429387de73e1db19 +index.html,1540155730858,5259b026cb212f9c0ead72150a72dee3e112ce2367e04443dcc017a5efd637dc +robots.txt,1540155820134,dec531097d819a68e5faac5e5c7bf59d1850b4a915b25e0347a04a34b616c3c0 +store/index.html,1540155782388,90afceed24d7a283233f1cbdca43498500f33c9930f17b3370cf6b2e4ce93d00 diff --git a/Firebase Hosting/database.rules.json b/Firebase Hosting/database.rules.json index d2b8268..c106abe 100644 --- a/Firebase Hosting/database.rules.json +++ b/Firebase Hosting/database.rules.json @@ -1,6 +1,38 @@ { - "rules": { - ".read": true, - ".write": true - } -} + "rules": { + ".read": false, + ".write": false, + "DepartmentList": { + ".read": true, + ".write": "auth !== null" + }, + "InstitutionList": { + ".read": true, + ".write": "auth !== null" + }, + "Institutions": { + ".read": true + }, + "Eds": { + ".read": true + }, + "CourseTemplates": { + ".read": true, + ".indexOn": ["edKey", "ownerId"], + "$id": { + ".write": "!data.exists() || data.child('ownerId').val() == auth.uid" + } + }, + "Users": { + "$uid": { + ".read": "$uid === auth.uid", + ".write": "$uid === auth.uid" + } + }, + "Requests": { + "$id": { + ".write": "auth !== null && !data.exists()" + } + } + } +} \ No newline at end of file diff --git a/Firebase Hosting/functions/index.js b/Firebase Hosting/functions/index.js index c497762..0c2e449 100644 --- a/Firebase Hosting/functions/index.js +++ b/Firebase Hosting/functions/index.js @@ -1,24 +1,19 @@ +/* Harold firebase cloud functions for checking database state and changes */ + const functions = require('firebase-functions'); const admin = require('firebase-admin'); -admin.initializeApp(functions.config().firebase); - -// // Create and Deploy Your First Cloud Functions -// // https://firebase.google.com/docs/functions/write-firebase-functions -// -exports.helloWorld = functions.https.onRequest((request, response) => { - response.send("Hello from Firebase!"); -}); +admin.initializeApp(); -exports.templateChange = functions.database.ref('/CourseTemplates/{id}').onWrite(event => { - const template = (event.data.val()) ? event.data.val() : event.data.previous.val(); - const pTemplate = event.data.previous.val(); +exports.templateChange = functions.database.ref('/CourseTemplates/{id}').onWrite((change, context) => { + const template = (change.after.val()) ? change.after.val() : change.before.val(); + const pTemplate = change.before.val(); const owner = template.ownerId; const iName = template.edKey.replace(/%&[\s\S]*/, ''); const dName = template.edKey.replace(/[\s\S]*%&/, ''); const inst = iName.replace(/\s+/g, '_'); const dept = dName.replace(/\s+/g, '_'); - if (event.data.previous.val() && event.data.current.val()) { + if (change.before.val() && change.after.val()) { return console.log('This is an update'); } @@ -78,11 +73,11 @@ exports.templateChange = functions.database.ref('/CourseTemplates/{id}').onWrite }); -exports.userNameChange = functions.database.ref('/Users/{id}/userName').onWrite(event => { - const userId = event.params.id; - const userName = event.data.val(); +exports.userNameChange = functions.database.ref('/Users/{id}/userName').onWrite((change, context) => { + const userId = context.params.id; + const userName = change.after.val(); - if (!event.data.previous.val()) { + if (!change.before.val()) { return console.log('new userName'); } @@ -99,10 +94,10 @@ exports.userNameChange = functions.database.ref('/Users/{id}/userName').onWrite( }); -exports.edKeyChanged = functions.database.ref('/Users/{id}').onWrite(event => { - const user = event.data.val(); - const userId = event.params.id; - const pUser = event.data.previous.val(); +exports.edKeyChanged = functions.database.ref('/Users/{id}').onWrite((change, context) => { + const user = change.after.val(); + const userId = context.params.id; + const pUser = change.before.val(); if (!pUser) { return console.log('new user'); @@ -190,8 +185,4 @@ exports.edKeyChanged = functions.database.ref('/Users/{id}').onWrite(event => { }); }); }); -}); - -exports.onRequest = functions.database.ref('/Requests/{id}').onWrite(event => { - }); \ No newline at end of file diff --git a/Firebase Hosting/functions/package.json b/Firebase Hosting/functions/package.json index dc2ec30..7b0a1e2 100644 --- a/Firebase Hosting/functions/package.json +++ b/Firebase Hosting/functions/package.json @@ -9,8 +9,8 @@ "logs": "firebase functions:log" }, "dependencies": { - "firebase-admin": "~6.0.0", + "firebase-admin": "6.0.0", "firebase-functions": "^2.0.5" }, "private": true -} \ No newline at end of file +} diff --git a/Firebase Hosting/functions/yarn.lock b/Firebase Hosting/functions/yarn.lock index ea27151..b9d509c 100644 --- a/Firebase Hosting/functions/yarn.lock +++ b/Firebase Hosting/functions/yarn.lock @@ -970,7 +970,7 @@ finalhandler@1.1.1: statuses "~1.4.0" unpipe "~1.0.0" -firebase-admin@~6.0.0: +firebase-admin@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-6.0.0.tgz#6a4be9e38b523ad7b4397b9b35853e4412e135ae" dependencies: diff --git a/Firebase Hosting/public/favicon.png b/Firebase Hosting/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..99fe2d382d300f3b360174d404b8be06d9029f3d GIT binary patch literal 4447 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 - + + + + + - Welcome to Firebase Hosting + Harold - CGPA & GPA Calculator | Free download on play store + + + + + + + + + + - - - - - - - - - + - - - -
-

Welcome

-

Firebase Hosting Setup Complete

-

You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!

- Open Hosting Documentation -
-

Firebase SDK Loading…

+ + + - - + + + + + + + \ No newline at end of file diff --git a/Firebase Hosting/public/orsteg_apps_harold_og_image.png b/Firebase Hosting/public/orsteg_apps_harold_og_image.png new file mode 100644 index 0000000000000000000000000000000000000000..06d78218d72e4734954688cba926c9cb7a6d834e GIT binary patch literal 21173 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

kr44A3m{eub(@zPo2!lH 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 y!R@~5cUreWN>8xThhh>&kJ + + + https://harold.apps.orsteg.com + 2018-10-20 + + + https://harold.apps.orsteg.com/store + 2018-10-20 + + \ No newline at end of file diff --git a/Firebase Hosting/public/store/index.html b/Firebase Hosting/public/store/index.html index f5dc049..b175411 100644 --- a/Firebase Hosting/public/store/index.html +++ b/Firebase Hosting/public/store/index.html @@ -1,33 +1,60 @@ - - + + + - Harold - Timetable & (CGPA GPA) Calculator | Free download on play store + Harold - CGPA & GPA Calculator | Free download on play store - + - - + + - - - + + + + + + + + + - - + + + + - - + + + \ No newline at end of file