Fixed WebPush Notification error subscription

This commit is contained in:
Paolo Arena
2021-10-05 15:39:44 +02:00
parent 3d7471f2d2
commit 87739a5847
3 changed files with 669 additions and 469 deletions

View File

@@ -1,11 +1,11 @@
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose').set('debug', false)
const mongoose = require('mongoose').set('debug', false);
const Subscription = mongoose.model('subscribers');
const tools = require('../tools/general');
var { authenticate } = require('../middleware/authenticate');
var {authenticate} = require('../middleware/authenticate');
const isValidSaveRequest = (req, res) => {
try {
@@ -15,14 +15,14 @@ const isValidSaveRequest = (req, res) => {
res.send(JSON.stringify({
error: {
id: 'no-endpoint',
message: 'Subscription must have an endpoint'
}
message: 'Subscription must have an endpoint',
},
}));
return false
return false;
}
return true
return true;
} catch (e) {
return false
return false;
}
};
@@ -39,65 +39,63 @@ router.post('/', authenticate, (req, res) => {
subscriptionModel.browser = req.get('User-Agent');
// Find if already exist
Subscription.findOne( {userId: subscriptionModel.userId, access: subscriptionModel.access, browser: subscriptionModel.browser})
.then(itemsub => {
return itemsub
})
.catch(err => {
Subscription.findOne({
userId: subscriptionModel.userId,
access: subscriptionModel.access,
browser: subscriptionModel.browser,
}).then(itemsub => {
return itemsub;
}).catch(err => {
// Not found
return null
})
.then(myitem => {
return null;
}).then(myitem => {
if (myitem === null) {
myitem = subscriptionModel;
tools.mylogshow('Subscription NOT EXISTED IN DB, so I use this created!', myitem)
} else {
myitem.endpoint = subscriptionModel.endpoint;
myitem.keys = subscriptionModel.keys;
}
// else
// tools.mylogshow('Subscription already Existed!');
myitem.save((err, subscription) => {
return myitem.save((err, subscription) => {
if (err) {
console.error(`Error occurred while saving subscription. Err: ${err}`);
res.status(500).json({
error: 'Technical error occurred'
return res.status(500).json({
error: 'Technical error occurred',
});
} else {
// Send 201 - resource created
// res.status(201).json({ data: 'Subscription saved.' });
res.send({ data: 'Subscription saved.' });
console.log('New Subscription id=', subscriptionModel.userId);
// console.log('req.body', req.body)
if (req.body.options !== null) {
tools.sendBackNotif(subscription, req.body.options)
tools.sendBackNotif(subscription, req.body.options);
}
return res.send({data: 'Subscription saved.'});
}
});
});
});
router.delete('/del', authenticate, (req, res) => {
// tools.mylog("TOKENREM = " + req.token);
const browser = req.get('User-Agent');
Subscription.findOneAndRemove( { userId: req.user._id, access: req.access, browser } ).then(() => {
Subscription.findOneAndRemove(
{userId: req.user._id, access: req.access, browser}).then(() => {
res.status(200).send();
}, () => {
res.status(400).send();
});
});
router.get('/', (req, res) => {
res.json({
data: 'Invalid Request Bad'
data: 'Invalid Request Bad',
});
});

View File

@@ -352,7 +352,7 @@ router.post('/login', (req, res) => {
.then(user => {
if (user) {
return user.generateAuthToken(req).then((token) => {
var usertosend = User();
var usertosend = new User();
shared_consts.fieldsUserToChange().forEach((field) => {
usertosend[field] = user[field]

File diff suppressed because it is too large Load Diff