Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const functions = require('firebase-functions');
- //cors
- const cors = require('cors')({origin: true});
- //para hacer uso de la bd
- const admin = require('firebase-admin');
- var twilio = require('twilio');
- admin.initializeApp(functions.config().firebase);
- //in : appID, email, newUser, name, password
- exports.assign_application = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- console.log("sacar app");
- admin.database().ref("/projects/"+request.body.projectID+'/apps/'+request.body.appID).once("value", function(snapshot) {
- let app = snapshot.val();
- //nuevo usuario
- if(request.body.newUser){
- console.log("nuevo usuario");
- //crear auth de usuario
- admin.auth().createUser({
- email: request.body.email,
- password: request.body.password
- }).then(success=>{
- //crear referencia en usuarios
- console.log("refrenecia user");
- admin.database().ref('/users').child(success.uid).set({
- email : request.body.email,
- name : request.body.name
- }).then(snap =>{
- console.log("ref app");
- //crear referencia en la aplicacion al usuario
- let usr = {
- email : request.body.email,
- name : request.body.name
- };
- if(request.body.extraUserData){
- Object.assign(usr, request.body.extraUserData);
- }
- admin.database().ref("/projects/"+request.body.projectID+'/apps/'+request.body.appID+"/users/").child(success.uid).set(usr).then(snap =>{
- console.log("ref user");
- //crear en el usuario de la aplioocacion
- admin.database().ref("/users/"+success.uid+"/myapps/").child(request.body.appID).set({
- name : app.name
- }).then(snap =>{
- response.send({success : 1, uid : success.uid});
- });
- });
- });
- }, reject=> {
- console.log(reject);
- response.send(reject);
- });
- } else {
- admin.database().ref("/users").orderByChild("email").equalTo(request.body.email).once("value", function(snapUser) {
- snapUser.forEach(objUser=>{
- let usr = objUser.val();
- console.log("cada usuario, este es uno");
- console.log(usr);
- //crear referencia en la aplicacion al usuario
- let usrAux = {
- email : request.body.email,
- name : usr.name
- };
- if(request.body.extraUserData){
- Object.assign(usrAux, request.body.extraUserData);
- }
- admin.database().ref("/projects/"+request.body.projectID+'/apps/'+request.body.appID+"/users/").child(objUser.key).set(usrAux).then(snap =>{
- console.log("ref user");
- //crear en el usuario de la aplioocacion
- admin.database().ref("/users/"+objUser.key+"/myapps/").child(request.body.appID).set({
- name : app.name
- }).then(snap =>{
- response.send({success : 1, uid: objUser.key});
- });
- });
- });
- });
- }
- });
- });
- });
- //param d entrada correoreceptor, appID, tipo
- exports.save_fcmid = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- let auxObj = {
- registrationID : request.body.registrationID,
- appID : request.body.appID,
- mail : request.body.loguedMail
- };
- console.log("objeto a reg ");
- console.log(auxObj);
- admin.database().ref("/fcm/").push(auxObj).then(snap =>{
- response.send("{success : 1}");
- });
- });
- });
- //param d entrada correoreceptor, appID, tipo
- exports.fcmbyappid = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- admin.database().ref("/fcm/").orderByChild("appID").equalTo(request.body.appID).once("value", function(snapFCM) {
- response.send({success : 1, registeredFCM : snapFCM.val()});
- });
- });
- });
- //param d entrada correoreceptor, appID, tipo
- exports.usersbyappid = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- admin.database().ref("/apps/"+request.body.appID+"/users").once("value", function(snapUsers) {
- response.send({success : 1, users : snapUsers.val()});
- });
- });
- });
- //projectID, appID, userID,
- exports.dissociate_app = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- admin.database().ref("/projects/"+request.body.projectID+'/apps/'+request.body.appID+"/users/").child(request.body.userID).set(null).then(snap =>{
- console.log("ref user");
- //crear en el usuario de la aplioocacion
- admin.database().ref("/users/"+request.body.userID+"/myapps/").child(request.body.appID).set(null).then(snap =>{
- response.send({success : 1});
- });
- });
- });
- });
- exports.save_app = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- if(request.body.appID){
- console.log("se actualiza app");
- admin.database().ref("/apps/").child(request.body.appID).update(request.body.dataObject).then(snap =>{
- response.send({success : 1, appID : request.body.appID});
- });
- } else {
- console.log("se crea nuevo");
- hoy = new Date();
- appID = hoy.getTime();
- admin.database().ref("/apps/").child(appID).set(request.body.dataObject).then(snap =>{
- response.send({success : 1, appID : appID});
- });
- }
- });
- });
- exports.verify_email = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- admin.database().ref("/users").orderByChild("email").equalTo(request.body.email).once("value", function(snapUser) {
- auxObj = {
- success : 1
- }
- if (snapUser.numChildren()>0){
- auxObj["valid"] = true;
- } else {
- auxObj["valid"] = false;
- }
- response.send(auxObj);
- });
- });
- });
- //param d entrada correoreceptor, appID, tipo
- exports.send_email = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- //buscamos la cuenta del usuario por su correo
- admin.database().ref("/users").orderByChild("email").equalTo(request.body.email).once("child_added", function(snapUser) {
- let user = snapUser.val();
- console.log("el usuario es ");
- console.log(user);
- admin.database().ref("/apps/"+request.body.appID).once("value", function(snapApp){
- let app = snapApp.val();
- console.log("la app es ");
- console.log(app);
- //importamos mailer
- 'use strict';
- const nodemailer = require('nodemailer');
- var EmailTemplates = require('swig-email-templates');
- // crear transportador rehusable
- let transporter = nodemailer.createTransport({
- service: 'gmail',
- auth: {
- user: 'enviocorreospwm@gmail.com',
- pass: 'G89J#nuBN6yY'
- }
- });
- //nuevo email templts
- var templates = new EmailTemplates({
- root: "./mail_templates/es"
- });
- var context = {
- username: user.name,
- appName: app.name,
- appID: request.body.appID,
- userEmail: request.body.email
- };
- //obtengo template
- templates.render('inscription_to_app.html', context, function(err, html, text) {
- console.log("regresa de render");
- console.log(err);
- console.log(html);
- console.log(text);
- //parametros del correo electronico
- let mailOptions = {
- from: '"Red ODCreator"', // sender address
- to: 'cristian@pwm.mx', // list of receivers
- subject: "Aprobación de vinculación de cuenta", // Subject line
- text: text, // plain text body
- html: html // html body
- };
- //enviar correo
- transporter.sendMail(mailOptions, (error, info) => {
- if (error) {
- response.send(error);
- } else {
- response.send('Message '+info.messageId+' sent: '+info.response);
- }
- });
- });
- });
- });
- });
- });
- //param d entrada correoreceptor, appID, tipo
- exports.send_notification = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- console.log("vamos a disponer");
- console.log(request.body.notifType);
- switch(request.body.notifType) {
- case 'mail':
- console.log("case mail");
- send_custom_email(request.body.message, request.body.mailTemplate, request.body.receptorMail, request.body.title, request.body.attachments, response);
- break;
- case 'push':
- console.log("case push");
- send_custom_push(request.body.message, request.body.receptor, request.body.title);
- response.send({success : 1});
- break;
- case 'sms':
- console.log("vamos a disponer");
- send_sms(request.body.message, request.body.receptor, response);
- response.send({success : 1});
- break;
- default:
- }
- });
- });
- function send_sms(message, receptor, response){
- console.log("vamos a enviar sms");
- var client = new twilio('AC882cda51fff7c898285004f750a8ed42', 'f64fdd160dd7c2a428e144521aa420b1');
- client.messages.create({
- body: message,
- to: receptor, // Text this number
- from: '+16506814381' // From a valid Twilio number
- })
- .then((message) => console.log(message.sid)).catch(err=>{
- console.log("error");
- console.log(err);
- })
- }
- function send_custom_push(message, receptor, title){
- console.log("enviando notif");
- let payload = {
- notification: {
- title,
- body: message
- }
- }
- admin.messaging().sendToDevice(receptor, payload).then(response => {
- console.log("regreso");
- console.log(response);
- }).catch(err=>{
- console.log("err");
- console.log(err);
- console.log(err.results[0].error);
- });
- }
- //param d entrada correoreceptor, appID, tipo
- function send_custom_email(message, type, receptorMail, title, attachments, response) {
- //importamos mailer
- 'use strict';
- const nodemailer = require('nodemailer');
- var EmailTemplates = require('swig-email-templates');
- // crear transportador rehusable
- /*let transporter = nodemailer.createTransport({
- service: 'gmail',
- auth: {
- user: 'enviocorreospwm@gmail.com',
- pass: 'G89J#nuBN6yY'
- }
- });*/
- let transporter = nodemailer.createTransport({
- host: 'email-smtp.us-east-1.amazonaws.com',
- port: 465,
- secure: true, // true for 465, false for other ports
- auth: {
- user: 'AKIAJBYIVT3WRZLBSADQ', // generated ethereal user
- pass: 'AjfuN87yW6Iktra2l0zqBzEK6q6xOSlZcNA7rdIyxkGp' // generated ethereal password
- }
- });
- transporter.verify(function(error, success) {
- if (error) {
- console.log("error al verificar el transportador de msjs");
- console.log(error);
- } else {
- console.log('Server is ready to take our messages');
- //nuevo email templts
- var templates = new EmailTemplates({
- root: "./mail_templates/es"
- });
- var context ;
- //obtengo template
- let mailTmplt ;
- switch(type) {
- case 'spc':
- //mailTmplt ='general_msg.html';
- break;
- default:
- mailTmplt ='general_msg.html';
- context = {
- message
- };
- }
- templates.render(mailTmplt, context, function(err, html, text) {
- console.log("regresa de render");
- console.log(err);
- console.log(html);
- console.log(text);
- //parametros del correo electronico
- let mailOptions = {
- from: 'contacto@webmexico.me', // sender address
- to: receptorMail, // list of receivers
- subject: title, // Subject line
- text: text, // plain text body
- html: text, // html body
- attachments: attachments
- };
- //enviar correo
- transporter.sendMail(mailOptions, (error, info) => {
- if (error) {
- response.send(error);
- } else {
- response.send('Message '+info.messageId+' sent: '+info.response);
- }
- });
- });
- }
- });
- }
- function escapeHtml(text) {
- var map = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- "'": '''
- };
- return text.replace(/[&<>"']/g, function(m) { return map[m]; });
- }
- //param d entrada correoreceptor, appID, tipo
- exports.grant_access_to_app = functions.https.onRequest((request, response) => {
- //activamos cors
- cors(request, response, () => {
- //crear referencia en la aplicacion al usuario
- console.log("sacar app");
- console.log(request.query.appID);
- admin.database().ref('/apps/'+request.query.appID).once("value", function(snapshot) {
- let app = snapshot.val();
- console.log("app");
- console.log(app);
- admin.database().ref("/users").orderByChild("email").equalTo(request.query.email).once("value", function(snapUser) {
- snapUser.forEach(objUser=>{
- let usr = objUser.val();
- console.log("cada usuario, este es uno");
- console.log(usr);
- //crear referencia en la aplicacion al usuario
- admin.database().ref('/apps/'+request.query.appID+"/users/").child(objUser.key).set({
- email : request.query.email,
- name : usr.name
- }).then(snap =>{
- console.log("ref user");
- //crear en el usuario de la aplioocacion
- admin.database().ref("/users/"+objUser.key+"/myapps/").child(request.query.appID).set({
- name : app.name
- }).then(snap =>{
- response.send("{success : 1}");
- });
- });
- });
- });
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement