From deefcaadfc397d0e5dac8551d46aaa34132f4737 Mon Sep 17 00:00:00 2001 From: Dan Head Date: Tue, 14 Feb 2017 23:42:44 +0000 Subject: [PATCH] Add rudimentary import/export data route Remove redundant admin tests on every route --- src/server.js | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/server.js b/src/server.js index f333440..df9ac8a 100644 --- a/src/server.js +++ b/src/server.js @@ -25,6 +25,7 @@ import { port, auth, starters, mains, rsvpEndDate } from './config'; import Person from './data/models/Person'; import Rollbar from './core/rollbar'; import { sendSlackMsgWithDebounce } from './core/slack'; +import sequelize from './data/sequelize'; const app = express(); @@ -228,10 +229,6 @@ app.use('/admin*', (req, res, next) => { app.post('/admin/person', (req, res, next) => { try { - if (!req.user || !admin(req.user.email)) { - res.redirect(401, '/login'); - } - const data = { firstname: req.body.firstname, lastname: req.body.lastname, @@ -252,10 +249,6 @@ app.post('/admin/person', (req, res, next) => { app.post('/admin/person/delete', (req, res, next) => { try { - if (!req.user || !admin(req.user.email)) { - res.redirect(401, '/login'); - } - if (req.body.key) { Person.destroy({ where: { key: req.body.key }, @@ -269,6 +262,44 @@ app.post('/admin/person/delete', (req, res, next) => { } }); +app.get('/admin/people/export', (req, res, next) => { + try { + Person.findAll() + .then(data => { + res.json(data); + }) + .catch(err => { + Rollbar.handleError(err); + next(err); + }); + } catch (err) { + Rollbar.handleError(err); + next(err); + } +}); + +app.post('/admin/people/import', (req, res, next) => { + try { + if (req.body.data && req.body.data.length > 0) { + Person.destroy({ where: {} }).then(() => { + const promises = []; + req.body.data.map(person => promises.push(Person.create(person))); + sequelize.Promise.all(promises).then(() => { + res.json({ success: true }); + }); + }).catch(err => { + Rollbar.handleError(err); + next(err); + }); + } else { + res.json({ success: false, error: 'no data' }); + } + } catch (err) { + Rollbar.handleError(err); + next(err); + } +}); + // // Register server-side rendering middleware