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;