mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-11 08:25:46 +01:00
profile export for #6441 + integration
This commit is contained in:
@@ -179,5 +179,9 @@
|
|||||||
"consent.right_to_erasure": "You have the Right to Erasure",
|
"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_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": "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 converter = require('json-2-csv');
|
||||||
var archiver = require('archiver');
|
var archiver = require('archiver');
|
||||||
|
|
||||||
|
var db = require('../database');
|
||||||
var user = require('../user');
|
var user = require('../user');
|
||||||
var meta = require('../meta');
|
var meta = require('../meta');
|
||||||
var posts = require('../posts');
|
var posts = require('../posts');
|
||||||
@@ -219,3 +220,21 @@ userController.exportUploads = function (req, res, next) {
|
|||||||
archive.finalize();
|
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/posts', middleware.checkAccountPermissions, controllers.user.exportPosts);
|
||||||
router.get('/user/uid/:uid/export/uploads', middleware.checkAccountPermissions, controllers.user.exportUploads);
|
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/pid/:id', controllers.api.getObject);
|
||||||
router.get('/:type/tid/:id', controllers.api.getObject);
|
router.get('/:type/tid/:id', controllers.api.getObject);
|
||||||
|
|||||||
Reference in New Issue
Block a user