- add: createPushSubscription :

'Subscribed to FreePlanet.app!',
  'You can now receive Notification and Messages.'
This commit is contained in:
Paolo Arena
2019-02-05 18:17:44 +01:00
parent 8e5e7addb7
commit db2a460594
11 changed files with 38 additions and 42 deletions

View File

@@ -3,7 +3,7 @@ var {User} = require('../models/user');
var authenticate = (req, res, next) => { var authenticate = (req, res, next) => {
var token = req.header('x-auth'); var token = req.header('x-auth');
console.log("TOKEN = " + token); // console.log("TOKEN = " + token);
User.findByToken(token).then((user) => { User.findByToken(token).then((user) => {
if (!user) { if (!user) {

View File

@@ -4,6 +4,8 @@ const Schema = mongoose.Schema;
mongoose.Promise = global.Promise; mongoose.Promise = global.Promise;
mongoose.level = "F"; mongoose.level = "F";
const { ObjectID } = require('mongodb');
// Resolving error Unknown modifier: $pushAll // Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => { mongoose.plugin(schema => {
schema.options.usePushEach = true schema.options.usePushEach = true
@@ -13,6 +15,7 @@ mongoose.plugin(schema => {
const SubscriberSchema = new Schema({ const SubscriberSchema = new Schema({
endpoint: String, endpoint: String,
keys: Schema.Types.Mixed, keys: Schema.Types.Mixed,
userId: String,
createDate: { createDate: {
type: Date, type: Date,
default: Date.now default: Date.now

View File

@@ -67,7 +67,7 @@ TodoSchema.methods.toJSON = function () {
var todo = this; var todo = this;
var todoObject = todo.toObject(); var todoObject = todo.toObject();
console.log(todoObject); // console.log(todoObject);
return _.pick(todoObject, ['_id', 'userId', 'pos', 'category', 'descr', 'priority', 'completed', 'created_at', 'modify_at', return _.pick(todoObject, ['_id', 'userId', 'pos', 'category', 'descr', 'priority', 'completed', 'created_at', 'modify_at',
'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'id_next', 'progress', 'modified']); 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'id_next', 'progress', 'modified']);

View File

@@ -82,7 +82,7 @@ UserSchema.methods.toJSON = function () {
}; };
UserSchema.methods.generateAuthToken = function () { UserSchema.methods.generateAuthToken = function () {
console.log("GENERA TOKEN : "); // console.log("GENERA TOKEN : ");
var user = this; var user = this;
var access = 'auth'; var access = 'auth';
var token = jwt.sign({ _id: user._id.toHexString(), access }, process.env.SIGNCODE).toString(); var token = jwt.sign({ _id: user._id.toHexString(), access }, process.env.SIGNCODE).toString();
@@ -130,8 +130,8 @@ UserSchema.statics.findByCredentials = function (username, password) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// Use bcrypt.compare to compare password and user.password // Use bcrypt.compare to compare password and user.password
console.log("pwd1 " + password); // console.log("pwd1 " + password);
console.log("pwd2 " + pwd); // console.log("pwd2 " + pwd);
bcrypt.compare(password, pwd, (err, res) => { bcrypt.compare(password, pwd, (err, res) => {
if (res) { if (res) {
resolve(user); resolve(user);

View File

@@ -23,6 +23,7 @@ router.post('/', (req, res) => {
res.status(500).json({ res.status(500).json({
error: 'Technical error occurred' error: 'Technical error occurred'
}); });
} else { } else {
let parallelSubscriptionCalls = subscriptions.map((subscription) => { let parallelSubscriptionCalls = subscriptions.map((subscription) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {

View File

@@ -5,7 +5,7 @@ const Subscription = mongoose.model('subscribers');
const webpush = require('web-push'); const webpush = require('web-push');
router.post('/', (req, res) => { router.post('/', (req, res) => {
const subscriptionModel = new Subscription(req.body); const subscriptionModel = new Subscription(req.body.subs);
subscriptionModel.save((err, subscription) => { subscriptionModel.save((err, subscription) => {
if (err) { if (err) {
console.error(`Error occurred while saving subscription. Err: ${err}`); console.error(`Error occurred while saving subscription. Err: ${err}`);
@@ -16,25 +16,16 @@ router.post('/', (req, res) => {
// Send 201 - resource created // Send 201 - resource created
res.status(201).json({ data: 'Subscription saved.' }); res.status(201).json({ data: 'Subscription saved.' });
sendBackNotif(subscription) sendBackNotif(subscription, req.body.options)
} }
}); });
}); });
function sendBackNotif(subscription) { function sendBackNotif(subscription, payload) {
// Create payload
const payload = JSON.stringify(
{
title: 'New Post HOLAAAA',
content: 'New Post added HOLAAAA!',
openUrl: '/help'
}
);
console.log('payload');
// Pass object into sendNotification // Pass object into sendNotification
webpush.sendNotification(subscription, JSON.stringify(payload)).catch(err => console.error(err));
webpush.sendNotification(subscription, payload).catch(err => console.error(err));
} }

View File

@@ -17,11 +17,12 @@ const allfieldTodoWithId = ['_id', ...allfieldTodo];
router.post('/:id', authenticate, (req, res) => { router.post('/:id', authenticate, (req, res) => {
console.log('POST ', req.body);
var body = _.pick(req.body, allfieldTodoWithId); var body = _.pick(req.body, allfieldTodoWithId);
var todo = new Todo(body); var todo = new Todo(body);
console.log('POST ', todo.descr);
todo.modified = false; todo.modified = false;
if (!todo.descr) { if (!todo.descr) {
console.log('RECORD NON VALIDO !?', req.body) console.log('RECORD NON VALIDO !?', req.body)
@@ -83,7 +84,7 @@ function sendNotificationToUser(title, content, openUrl) {
router.get('/:userId', authenticate, (req, res) => { router.get('/:userId', authenticate, (req, res) => {
var userId = req.params.userId; var userId = req.params.userId;
console.log('GET : ', req, req.params); console.log('GET : ', req.params);
// Extract all the todos of the userId only // Extract all the todos of the userId only
Todo.findAllByUserId(userId).then((todos) => { Todo.findAllByUserId(userId).then((todos) => {

View File

@@ -14,8 +14,8 @@ router.post('/', (req, res) => {
var body = _.pick(req.body, ['email', 'password', 'username', 'idapp', 'keyappid', 'lang']); var body = _.pick(req.body, ['email', 'password', 'username', 'idapp', 'keyappid', 'lang']);
var user = new User(body); var user = new User(body);
console.log("LANG PASSATO = " + user.lang); // console.log("LANG PASSATO = " + user.lang);
console.log("IDAPP = " + user.idapp); // console.log("IDAPP = " + user.idapp);
user.linkreg = reg.getlinkregByEmail(body.email, body.username); user.linkreg = reg.getlinkregByEmail(body.email, body.username);
user.verified_email = false; user.verified_email = false;
@@ -91,13 +91,13 @@ router.post('/login', (req, res) => {
usertosend.userId = user._id.toHexString(); usertosend.userId = user._id.toHexString();
usertosend.verified_email = user.verified_email; usertosend.verified_email = user.verified_email;
console.log("user.verified_email:" + user.verified_email); // console.log("user.verified_email:" + user.verified_email);
console.log("usertosend.userId", usertosend.userId); // console.log("usertosend.userId", usertosend.userId);
console.log("usertosend:"); // console.log("usertosend:");
console.log(usertosend); // console.log(usertosend);
res.header('x-auth', token).send(usertosend); res.header('x-auth', token).send(usertosend);
console.log("TROVATOOO!"); // console.log("TROVATOOO!");
}); });
} }
}).catch((e) => { }).catch((e) => {

View File

@@ -29,12 +29,12 @@ require('./models/subscribers');
const { ObjectID } = require('mongodb'); const { ObjectID } = require('mongodb');
const index = require('./router'); const index_router = require('./router/index_router');
const push = require('./router/push'); const push_router = require('./router/push_router');
const subscribe = require('./router/subscribe'); const subscribe_router = require('./router/subscribe_router');
const email = require('./router/email'); const email_router = require('./router/email_router');
const todos = require('./router/todos'); const todos_router = require('./router/todos_router');
const users = require('./router/users'); const users_router = require('./router/users_router');
require('./db/mongoose'); require('./db/mongoose');
@@ -82,12 +82,12 @@ webpush.setVapidDetails('mailto:' + process.env.EMAIL_FROM, publicVapidKey, priv
// Use Routes // Use Routes
app.use('/', index); app.use('/', index_router);
app.use('/subscribe', subscribe); app.use('/subscribe', subscribe_router);
app.use('/push', push); app.use('/push', push_router);
app.use('/email', email); app.use('/email', email_router);
app.use('/todos', todos); app.use('/todos', todos_router);
app.use('/users', users); app.use('/users', users_router);
// catch 404 and forward to error handler // catch 404 and forward to error handler
@@ -106,7 +106,7 @@ app.use(function (req, res, next) {
if (app.get('env') === 'development') { if (app.get('env') === 'development') {
app.use(function (err, req, res, next) { app.use(function (err, req, res, next) {
console.log('Error: ', err.message) console.log('Error: ', err.message)
console.trace(); // console.trace();
res.status(err.status || 500).send({error: err.message}); res.status(err.status || 500).send({error: err.message});
// res.render('error', { // res.render('error', {
// message: err.message, // message: err.message,
@@ -145,7 +145,7 @@ if (process.env.TEST_ATTIVO) {
function eseguitest() { function eseguitest() {
if (true) { if (false) {
console.log("ESEGUI I TEST:"); console.log("ESEGUI I TEST:");
console.log("linkreg = " + sendemail.getlinkReg(1, "myusername")); console.log("linkreg = " + sendemail.getlinkReg(1, "myusername"));
} }