s3-3on/backend/routes/user.js

61 lines
1.6 KiB
JavaScript
Executable File

const express = require('express');
const fileUpload = require('express-fileupload');
const uuid = require('lil-uuid');
const sharp = require('sharp');
const db = require('../db');
const router = express.Router();
router.get('/profile', async (req, res, next) => {
const r = await db.query('SELECT * FROM users WHERE email = $1', [req.user.email]);
if (r.rowCount < 1) {
return res.redirect('/logout');
}
res.render('profile', r.rows[0]);
});
router.get('/change_propic', async (req, res, next) => {
res.render('change_propic');
});
router.post('/change_propic',
fileUpload({
limits: { fileSize: 1 * 1024 * 1024 },
}),
async (req, res, next) => {
const r = await db.query('SELECT * FROM users WHERE email = $1', [req.user.email]);
if (r.rows[0].propic !== '/static/img/default.png') {
res.locals.errormsg = 'This is a non-fungible propic';
return res.render('change_propic');
}
const propic = req.files.propic;
if (!propic) {
res.locals.errormsg = 'Error, upload a file';
return res.render('change_propic');
}
const filename = '/uploads/' + uuid();
try {
await sharp(propic.data).resize(100, 100).withMetadata().toFile(filename);
await db.query('UPDATE users SET propic = $1 WHERE email = $2', [filename, req.user.email]);
return res.redirect('/profile');
} catch (e) {
console.log(e);
res.locals.errormsg = 'Bad image';
return res.render('change_propic');
}
}
);
module.exports = router;