Add rudimentary import/export data route
Remove redundant admin tests on every route
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user