61 lines
1.6 KiB
JavaScript
Executable File
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;
|