Fixed WebPush Notification error subscription
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const mongoose = require('mongoose').set('debug', false)
|
const mongoose = require('mongoose').set('debug', false);
|
||||||
const Subscription = mongoose.model('subscribers');
|
const Subscription = mongoose.model('subscribers');
|
||||||
|
|
||||||
const tools = require('../tools/general');
|
const tools = require('../tools/general');
|
||||||
@@ -15,14 +15,14 @@ const isValidSaveRequest = (req, res) => {
|
|||||||
res.send(JSON.stringify({
|
res.send(JSON.stringify({
|
||||||
error: {
|
error: {
|
||||||
id: 'no-endpoint',
|
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) {
|
} catch (e) {
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -39,65 +39,63 @@ router.post('/', authenticate, (req, res) => {
|
|||||||
subscriptionModel.browser = req.get('User-Agent');
|
subscriptionModel.browser = req.get('User-Agent');
|
||||||
|
|
||||||
// Find if already exist
|
// Find if already exist
|
||||||
Subscription.findOne( {userId: subscriptionModel.userId, access: subscriptionModel.access, browser: subscriptionModel.browser})
|
Subscription.findOne({
|
||||||
.then(itemsub => {
|
userId: subscriptionModel.userId,
|
||||||
return itemsub
|
access: subscriptionModel.access,
|
||||||
})
|
browser: subscriptionModel.browser,
|
||||||
.catch(err => {
|
}).then(itemsub => {
|
||||||
|
return itemsub;
|
||||||
|
}).catch(err => {
|
||||||
// Not found
|
// Not found
|
||||||
return null
|
return null;
|
||||||
})
|
}).then(myitem => {
|
||||||
.then(myitem => {
|
|
||||||
|
|
||||||
if (myitem === null) {
|
if (myitem === null) {
|
||||||
myitem = subscriptionModel;
|
myitem = subscriptionModel;
|
||||||
tools.mylogshow('Subscription NOT EXISTED IN DB, so I use this created!', myitem)
|
tools.mylogshow('Subscription NOT EXISTED IN DB, so I use this created!', myitem)
|
||||||
|
} else {
|
||||||
|
myitem.endpoint = subscriptionModel.endpoint;
|
||||||
|
myitem.keys = subscriptionModel.keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
// else
|
return myitem.save((err, subscription) => {
|
||||||
// tools.mylogshow('Subscription already Existed!');
|
|
||||||
|
|
||||||
|
|
||||||
myitem.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}`);
|
||||||
res.status(500).json({
|
return res.status(500).json({
|
||||||
error: 'Technical error occurred'
|
error: 'Technical error occurred',
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Send 201 - resource created
|
// Send 201 - resource created
|
||||||
// res.status(201).json({ data: 'Subscription saved.' });
|
// res.status(201).json({ data: 'Subscription saved.' });
|
||||||
res.send({ data: 'Subscription saved.' });
|
|
||||||
|
|
||||||
console.log('New Subscription id=', subscriptionModel.userId);
|
console.log('New Subscription id=', subscriptionModel.userId);
|
||||||
|
|
||||||
// console.log('req.body', req.body)
|
// console.log('req.body', req.body)
|
||||||
|
|
||||||
if (req.body.options !== null) {
|
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) => {
|
router.delete('/del', authenticate, (req, res) => {
|
||||||
// tools.mylog("TOKENREM = " + req.token);
|
// tools.mylog("TOKENREM = " + req.token);
|
||||||
const browser = req.get('User-Agent');
|
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(200).send();
|
||||||
}, () => {
|
}, () => {
|
||||||
res.status(400).send();
|
res.status(400).send();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
router.get('/', (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
res.json({
|
res.json({
|
||||||
data: 'Invalid Request Bad'
|
data: 'Invalid Request Bad',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ router.post('/login', (req, res) => {
|
|||||||
.then(user => {
|
.then(user => {
|
||||||
if (user) {
|
if (user) {
|
||||||
return user.generateAuthToken(req).then((token) => {
|
return user.generateAuthToken(req).then((token) => {
|
||||||
var usertosend = User();
|
var usertosend = new User();
|
||||||
|
|
||||||
shared_consts.fieldsUserToChange().forEach((field) => {
|
shared_consts.fieldsUserToChange().forEach((field) => {
|
||||||
usertosend[field] = user[field]
|
usertosend[field] = user[field]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user