Advertisement
Guest User

Untitled

a guest
Oct 8th, 2017
589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. // The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
  2. // The Firebase Admin SDK to access the Firebase Realtime Database.
  3. const functions = require('firebase-functions');
  4. const admin = require('firebase-admin');
  5. const nodemailer = require('nodemailer');
  6. const hash = require('string-hash');
  7. admin.initializeApp(functions.config().firebase);
  8. const supportEmail = encodeURIComponent(functions.config().supportemail.email);
  9. const supportPassword = encodeURIComponent(functions.config().supportemail.password);
  10. const supportMailTransport = nodemailer.createTransport(
  11. `smtps://${supportEmail}:${supportPassword}@smtp.gmail.com`);
  12.  
  13. // Initialise a basic user in the database
  14. exports.createUser = functions.auth.user().onCreate(event => {
  15. const user = event.data;
  16. return admin.database().ref(`/users/${user.uid}`).update({
  17. email: user.email,
  18. credit: 0,
  19. credit_total: 0,
  20. joined: Date.now()
  21. });
  22. });
  23.  
  24. // Welcome the user and send verification email
  25. exports.welcomeEmail = functions.database.ref('/users/{uid}/email')
  26. .onCreate(event => {
  27.  
  28. const email = event.data.val();
  29. const uid = event.params.uid
  30.  
  31. const url = 'https://us-central1-route-kw.cloudfunctions.net/verifyEmail?uid=' + uid + '&secret=' + (hash(uid) + 666)
  32.  
  33. let mailOptions = {
  34. from: '"ROUTEKW" <support@routekw.com>',
  35. to: email,
  36. subject: 'Welcome to ROUTEKW Beta 🛣',
  37. html: '<p>Please verify your email by clicking <a href="' + url + '">here</a></p><p>If you have not registered for ROUTEKW, you can ignore this email.'
  38. };
  39. // send mail with defined transport object
  40. supportMailTransport.sendMail(mailOptions, (error, info) => {
  41. if (error) {
  42. return console.log(error);
  43. }
  44. });
  45. });
  46.  
  47. // Verify email
  48. exports.verifyEmail = functions.https.onRequest((req, res) => {
  49. const uid = req.query.uid + ''
  50. const secret = req.query.secret + ''
  51. const check = hash(req.query.uid) + 666 + ''
  52.  
  53. admin.database().ref('users/' + uid + '/role').once("value").then((snapshot) => {
  54. if (secret === check && snapshot.val() === 0) {
  55. admin.database().ref('users/' + uid).update({
  56. role: 2
  57. })
  58. res.redirect(303, 'https://www.routekw.com/');
  59. } else if (secret === check && snapshot.val() === 1) {
  60. admin.database().ref('users/' + uid).update({
  61. role: 10
  62. })
  63. res.redirect(303, 'https://www.routekw.com/');
  64. } else {
  65. console.log('fooking ell')
  66. res.redirect(303, 'https://www.routekw.com/404');
  67. }
  68. })
  69. });
  70.  
  71. // Add chosen username to the user and reserve it
  72. exports.reserveUsername = functions.database.ref('/profiles_private/{uid}/username')
  73. .onCreate(event => {
  74.  
  75. const uid = event.params.uid
  76. const username = event.data.val();
  77. const lowercaseUsername = username.toLowerCase();
  78.  
  79. admin.database().ref('profiles_public/').orderByChild('username_lowercase').equalTo(lowercaseUsername).once('value', snapshot => {
  80. if (snapshot.val()) {
  81. admin.database().ref('profiles_private/' + uid + '/username').remove();
  82. } else {
  83. admin.database().ref('profiles_public/' + uid).update({
  84. username: username,
  85. username_lowercase: lowercaseUsername
  86. })
  87. }
  88. })
  89. });
  90.  
  91. exports.verifyUsername = functions.database.ref('/profiles_public/{uid}/username')
  92. .onCreate(event => {
  93.  
  94. const uid = event.params.uid
  95. const username = event.data.val();
  96.  
  97. admin.database().ref('users/' + uid + '/role').once('value', snapshot => {
  98.  
  99. if (snapshot.val() < 1 || !snapshot.val()) {
  100. admin.database().ref('users/' + uid).update({
  101. role: 1,
  102. username: username
  103. })
  104.  
  105. } else {
  106. admin.database().ref('users/' + uid).update({
  107. role: 10,
  108. username: username
  109. })
  110.  
  111. }
  112. })
  113. });
  114.  
  115. exports.fakePurchase = functions.database.ref('/purchases/{uid}/user')
  116. .onCreate(event => {
  117.  
  118. const purchaseID = event.params.uid
  119. const userID = event.data.val();
  120.  
  121. event.data.ref.parent.child('course').once('value', snapshot => {
  122. let courseID = snapshot.val();
  123. admin.database().ref('admin/month').once('value', nestedSnapshot => {
  124. let expiryDate = Date.now() + (86400000 * nestedSnapshot.val())
  125.  
  126. admin.database().ref('users/' + userID + '/purchases').update({
  127. [purchaseID]: true
  128. })
  129.  
  130. admin.database().ref('users/' + userID + '/courses/' + courseID).update({
  131. full: expiryDate
  132. })
  133. })
  134. })
  135. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement