profile export for + integration

v1.18.x
Julian Lam
parent a6564b7b4e
commit 67dec83011

@ -179,5 +179,9 @@
"consent.right_to_erasure": "You have the Right to Erasure",
"consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account.",
"consent.right_to_data_portability": "You have the Right to Data Portability",
"consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below."
"consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.",
"consent.export_profile": "Export Your Profile (.csv)",
"consent.export_uploads": "Export Uploaded Content (.zip)",
"consent.export_posts": "Export Posts (.csv)"
}

@ -7,6 +7,7 @@ var winston = require('winston');
var converter = require('json-2-csv');
var archiver = require('archiver');
var db = require('../database');
var user = require('../user');
var meta = require('../meta');
var posts = require('../posts');
@ -219,3 +220,21 @@ userController.exportUploads = function (req, res, next) {
archive.finalize();
});
};
userController.exportProfile = function (req, res, next) {
async.waterfall([
async.apply(db.getObjects.bind(db), ['user:1', 'user:1:settings']),
function (objects, next) {
Object.assign(objects[0], objects[1]);
delete objects[0].password;
converter.json2csv(objects[0], next);
},
], function (err, csv) {
if (err) {
return next(err);
}
res.set('Content-Type', 'text/csv').set('Content-Disposition', 'attachment; filename="' + req.params.uid + '_profile.csv"').send(csv);
});
};

@ -17,6 +17,7 @@ module.exports = function (app, middleware, controllers) {
router.get('/user/uid/:uid/export/posts', middleware.checkAccountPermissions, controllers.user.exportPosts);
router.get('/user/uid/:uid/export/uploads', middleware.checkAccountPermissions, controllers.user.exportUploads);
router.get('/user/uid/:uid/export/profile', middleware.checkAccountPermissions, controllers.user.exportProfile);
router.get('/:type/pid/:id', controllers.api.getObject);
router.get('/:type/tid/:id', controllers.api.getObject);

Loading…
Cancel
Save