Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
- // The Firebase Admin SDK to access the Firebase Realtime Database.
- const functions = require('firebase-functions');
- const admin = require('firebase-admin');
- const nodemailer = require('nodemailer');
- const hash = require('string-hash');
- admin.initializeApp(functions.config().firebase);
- const supportEmail = encodeURIComponent(functions.config().supportemail.email);
- const supportPassword = encodeURIComponent(functions.config().supportemail.password);
- const supportMailTransport = nodemailer.createTransport(
- `smtps://${supportEmail}:${supportPassword}@smtp.gmail.com`);
- // Initialise a basic user in the database
- exports.createUser = functions.auth.user().onCreate(event => {
- const user = event.data;
- return admin.database().ref(`/users/${user.uid}`).update({
- email: user.email,
- credit: 0,
- credit_total: 0,
- joined: Date.now()
- });
- });
- // Welcome the user and send verification email
- exports.welcomeEmail = functions.database.ref('/users/{uid}/email')
- .onCreate(event => {
- const email = event.data.val();
- const uid = event.params.uid
- const url = 'https://us-central1-route-kw.cloudfunctions.net/verifyEmail?uid=' + uid + '&secret=' + (hash(uid) + 666)
- let mailOptions = {
- from: '"ROUTEKW" <support@routekw.com>',
- to: email,
- subject: 'Welcome to ROUTEKW Beta 🛣',
- 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.'
- };
- // send mail with defined transport object
- supportMailTransport.sendMail(mailOptions, (error, info) => {
- if (error) {
- return console.log(error);
- }
- });
- });
- // Verify email
- exports.verifyEmail = functions.https.onRequest((req, res) => {
- const uid = req.query.uid + ''
- const secret = req.query.secret + ''
- const check = hash(req.query.uid) + 666 + ''
- admin.database().ref('users/' + uid + '/role').once("value").then((snapshot) => {
- if (secret === check && snapshot.val() === 0) {
- admin.database().ref('users/' + uid).update({
- role: 2
- })
- res.redirect(303, 'https://www.routekw.com/');
- } else if (secret === check && snapshot.val() === 1) {
- admin.database().ref('users/' + uid).update({
- role: 10
- })
- res.redirect(303, 'https://www.routekw.com/');
- } else {
- console.log('fooking ell')
- res.redirect(303, 'https://www.routekw.com/404');
- }
- })
- });
- // Add chosen username to the user and reserve it
- exports.reserveUsername = functions.database.ref('/profiles_private/{uid}/username')
- .onCreate(event => {
- const uid = event.params.uid
- const username = event.data.val();
- const lowercaseUsername = username.toLowerCase();
- admin.database().ref('profiles_public/').orderByChild('username_lowercase').equalTo(lowercaseUsername).once('value', snapshot => {
- if (snapshot.val()) {
- admin.database().ref('profiles_private/' + uid + '/username').remove();
- } else {
- admin.database().ref('profiles_public/' + uid).update({
- username: username,
- username_lowercase: lowercaseUsername
- })
- }
- })
- });
- exports.verifyUsername = functions.database.ref('/profiles_public/{uid}/username')
- .onCreate(event => {
- const uid = event.params.uid
- const username = event.data.val();
- admin.database().ref('users/' + uid + '/role').once('value', snapshot => {
- if (snapshot.val() < 1 || !snapshot.val()) {
- admin.database().ref('users/' + uid).update({
- role: 1,
- username: username
- })
- } else {
- admin.database().ref('users/' + uid).update({
- role: 10,
- username: username
- })
- }
- })
- });
- exports.fakePurchase = functions.database.ref('/purchases/{uid}/user')
- .onCreate(event => {
- const purchaseID = event.params.uid
- const userID = event.data.val();
- event.data.ref.parent.child('course').once('value', snapshot => {
- let courseID = snapshot.val();
- admin.database().ref('admin/month').once('value', nestedSnapshot => {
- let expiryDate = Date.now() + (86400000 * nestedSnapshot.val())
- admin.database().ref('users/' + userID + '/purchases').update({
- [purchaseID]: true
- })
- admin.database().ref('users/' + userID + '/courses/' + courseID).update({
- full: expiryDate
- })
- })
- })
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement