2021-06-15 17:01:22 +01:00
|
|
|
const debug = require('@tryghost/debug')('services:routing:controllers:unsubscribe');
|
2019-11-15 09:36:49 +00:00
|
|
|
const path = require('path');
|
2022-04-28 13:33:07 +05:30
|
|
|
const url = require('url');
|
|
|
|
|
|
|
|
const urlUtils = require('../../../../shared/url-utils');
|
2019-11-15 09:36:49 +00:00
|
|
|
const megaService = require('../../../../server/services/mega');
|
2022-04-05 19:31:49 +01:00
|
|
|
const renderer = require('../../rendering');
|
2022-04-28 13:33:07 +05:30
|
|
|
const labs = require('../../../../shared/labs');
|
2019-11-15 09:36:49 +00:00
|
|
|
|
2021-01-28 18:07:45 +00:00
|
|
|
module.exports = async function unsubscribeController(req, res) {
|
2019-11-15 09:36:49 +00:00
|
|
|
debug('unsubscribeController');
|
|
|
|
|
2022-04-28 13:33:07 +05:30
|
|
|
if (labs.isSet('multipleNewslettersUI')) {
|
|
|
|
const {query} = url.parse(req.url, true);
|
|
|
|
|
|
|
|
if (!query || !query.uuid) {
|
|
|
|
res.writeHead(400);
|
|
|
|
return res.end('Email address not found.');
|
|
|
|
}
|
|
|
|
|
|
|
|
const redirectUrl = new URL(urlUtils.urlFor('home', true));
|
|
|
|
redirectUrl.searchParams.append('uuid', query.uuid);
|
|
|
|
if (query.newsletter) {
|
|
|
|
redirectUrl.searchParams.append('newsletter', query.newsletter);
|
|
|
|
}
|
|
|
|
redirectUrl.searchParams.append('action', 'unsubscribe');
|
|
|
|
|
|
|
|
return res.redirect(302, redirectUrl.href);
|
|
|
|
}
|
|
|
|
|
2019-11-15 09:36:49 +00:00
|
|
|
let data = {};
|
|
|
|
|
|
|
|
try {
|
|
|
|
data.member = await megaService.mega.handleUnsubscribeRequest(req);
|
|
|
|
} catch (err) {
|
|
|
|
data.error = err.message;
|
|
|
|
}
|
|
|
|
|
|
|
|
const templateName = 'unsubscribe';
|
|
|
|
|
|
|
|
res.routerOptions = {
|
|
|
|
type: 'custom',
|
|
|
|
templates: templateName,
|
|
|
|
defaultTemplate: path.resolve(__dirname, '../../../views/', templateName)
|
|
|
|
};
|
|
|
|
|
2022-04-05 19:31:49 +01:00
|
|
|
return renderer.renderer(req, res, data);
|
2019-11-15 09:36:49 +00:00
|
|
|
};
|