better admin logo management

This commit is contained in:
les
2020-07-05 23:53:37 +02:00
parent da0aa3cb86
commit 2dcf4781ff
3 changed files with 27 additions and 11 deletions

View File

@@ -7,7 +7,10 @@ const pkg = require('../../../package.json')
const debug = require('debug')('settings')
const crypto = require('crypto')
const util = require('util')
const toIco = require('to-ico')
const generateKeyPair = util.promisify(crypto.generateKeyPair)
const readFile = util.promisify(fs.readFile)
const writeFile = util.promisify(fs.writeFile)
const defaultSettings = {
instance_timezone: 'Europe/Rome',
@@ -94,7 +97,6 @@ const settingsController = {
settingsController[is_secret ? 'secretSettings' : 'settings'][key] = value
return true
} catch (e) {
console.error(e)
return false
}
},
@@ -105,11 +107,18 @@ const settingsController = {
if (ret) { res.sendStatus(200) } else { res.sendStatus(400) }
},
async setFavicon (req, res) {
async setLogo (req, res) {
if (!req.file) {
return res.status(400).send('Mmmmm sould not be here!')
}
await settingsController.set('favicon', path.join(req.file.destination, req.file.filename))
const image = await readFile(path.join(req.file.destination, req.file.filename))
const favicon_path = path.resolve(config.upload_path, 'favicon.ico')
const favicon = await toIco([image], { sizes: [64], resize: true })
writeFile(favicon_path, favicon)
settingsController.set('favicon', favicon_path)
res.sendStatus(200)
},

View File

@@ -16,7 +16,6 @@ const announceController = require('./controller/announce')
const storage = require('./storage')
const upload = multer({ storage })
const path = require('path')
const config = require('config')
const debug = require('debug')('api')
@@ -105,7 +104,7 @@ api.delete('/event/notification/:code', eventController.delNotification)
api.get('/settings', settingsController.getAllRequest)
api.post('/settings', isAdmin, settingsController.setRequest)
api.get('/event/:event_id.:format?', cors, eventController.get)
api.post('/settings/favicon', isAdmin, multer({ dest: path.resolve(config.upload_path, 'thumb/') }).single('favicon'), settingsController.setFavicon)
api.post('/settings/logo', isAdmin, multer({ dest: config.upload_path }).single('logo'), settingsController.setLogo)
// confirm event
api.get('/event/confirm/:event_id', hasPerm('event:write'), eventController.confirm)