linting
This commit is contained in:
@@ -9,7 +9,7 @@ const federation = require('../../federation/helpers')
|
||||
|
||||
const eventController = {
|
||||
|
||||
async addComment(req, res) {
|
||||
async addComment (req, res) {
|
||||
// comment could be added to an event or to another comment
|
||||
let event = await Event.findOne({ where: { activitypub_id: { [Op.eq]: req.body.id } } })
|
||||
if (!event) {
|
||||
@@ -21,11 +21,11 @@ const eventController = {
|
||||
res.json(comment)
|
||||
},
|
||||
|
||||
async getMeta(req, res) {
|
||||
async getMeta (req, res) {
|
||||
const places = await Place.findAll({
|
||||
order: [[Sequelize.literal('weigth'), 'DESC']],
|
||||
attributes: {
|
||||
include: [[Sequelize.fn('count', Sequelize.col('events.placeId')) , 'weigth']],
|
||||
include: [[Sequelize.fn('count', Sequelize.col('events.placeId')), 'weigth']],
|
||||
exclude: ['weigth', 'createdAt', 'updatedAt']
|
||||
},
|
||||
include: [{ model: Event, attributes: [] }],
|
||||
@@ -36,25 +36,25 @@ const eventController = {
|
||||
order: [['weigth', 'DESC']],
|
||||
attributes: {
|
||||
exclude: ['createdAt', 'updatedAt']
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
res.json({ tags, places })
|
||||
},
|
||||
|
||||
async getNotifications(event) {
|
||||
function match(event, filters) {
|
||||
async getNotifications (event) {
|
||||
function match (event, filters) {
|
||||
// matches if no filter specified
|
||||
if (!filters) return true
|
||||
if (!filters) { return true }
|
||||
|
||||
// check for visibility
|
||||
if (typeof filters.is_visible !== 'undefined' && filters.is_visible !== event.is_visible) return false
|
||||
if (typeof filters.is_visible !== 'undefined' && filters.is_visible !== event.is_visible) { return false }
|
||||
|
||||
if (!filters.tags && !filters.places) return true
|
||||
if (!filters.tags.length && !filters.places.length) return true
|
||||
if (!filters.tags && !filters.places) { return true }
|
||||
if (!filters.tags.length && !filters.places.length) { return true }
|
||||
if (filters.tags.length) {
|
||||
const m = lodash.intersection(event.tags.map(t => t.tag), filters.tags)
|
||||
if (m.length > 0) return true
|
||||
if (m.length > 0) { return true }
|
||||
}
|
||||
if (filters.places.length) {
|
||||
if (filters.places.find(p => p === event.place.name)) {
|
||||
@@ -68,7 +68,7 @@ const eventController = {
|
||||
return notifications.filter(notification => match(event, notification.filters))
|
||||
},
|
||||
|
||||
async updateTag(req, res) {
|
||||
async updateTag (req, res) {
|
||||
const tag = await Tag.findByPk(req.body.tag)
|
||||
if (tag) {
|
||||
res.json(await tag.update(req.body))
|
||||
@@ -77,7 +77,7 @@ const eventController = {
|
||||
}
|
||||
},
|
||||
|
||||
async updatePlace(req, res) {
|
||||
async updatePlace (req, res) {
|
||||
const place = await Place.findByPk(req.body.id)
|
||||
await place.update(req.body)
|
||||
res.json(place)
|
||||
@@ -85,12 +85,12 @@ const eventController = {
|
||||
|
||||
// TODO retrieve next/prev event also
|
||||
// select id, start_datetime, title from events where start_datetime > (select start_datetime from events where id=89) order by start_datetime limit 20;
|
||||
async get(req, res) {
|
||||
async get (req, res) {
|
||||
const is_admin = req.user && req.user.is_admin
|
||||
const id = req.params.event_id
|
||||
let event = await Event.findByPk(id, {
|
||||
const event = await Event.findByPk(id, {
|
||||
plain: true,
|
||||
attributes: {
|
||||
attributes: {
|
||||
exclude: ['createdAt', 'updatedAt']
|
||||
},
|
||||
include: [
|
||||
@@ -109,29 +109,29 @@ const eventController = {
|
||||
}
|
||||
},
|
||||
|
||||
async confirm(req, res) {
|
||||
async confirm (req, res) {
|
||||
const id = Number(req.params.event_id)
|
||||
const event = await Event.findByPk(id)
|
||||
if (!event) return res.sendStatus(404)
|
||||
if (!event) { return res.sendStatus(404) }
|
||||
|
||||
try {
|
||||
event.is_visible = true
|
||||
await event.save()
|
||||
|
||||
res.sendStatus(200)
|
||||
|
||||
|
||||
// send notification
|
||||
//notifier.notifyEvent(event.id)
|
||||
//federation.sendEvent(event, req.user)
|
||||
// notifier.notifyEvent(event.id)
|
||||
// federation.sendEvent(event, req.user)
|
||||
} catch (e) {
|
||||
res.sendStatus(404)
|
||||
}
|
||||
},
|
||||
|
||||
async unconfirm(req, res) {
|
||||
async unconfirm (req, res) {
|
||||
const id = Number(req.params.event_id)
|
||||
const event = await Event.findByPk(id)
|
||||
if (!event) return sendStatus(404)
|
||||
if (!event) { return sendStatus(404) }
|
||||
|
||||
try {
|
||||
event.is_visible = false
|
||||
@@ -142,7 +142,7 @@ const eventController = {
|
||||
}
|
||||
},
|
||||
|
||||
async getUnconfirmed(req, res) {
|
||||
async getUnconfirmed (req, res) {
|
||||
const events = await Event.findAll({
|
||||
where: {
|
||||
is_visible: false
|
||||
@@ -153,7 +153,7 @@ const eventController = {
|
||||
res.json(events)
|
||||
},
|
||||
|
||||
async addNotification(req, res) {
|
||||
async addNotification (req, res) {
|
||||
try {
|
||||
const notification = {
|
||||
filters: { is_visible: true },
|
||||
@@ -168,7 +168,7 @@ const eventController = {
|
||||
}
|
||||
},
|
||||
|
||||
async delNotification(req, res) {
|
||||
async delNotification (req, res) {
|
||||
const remove_code = req.params.code
|
||||
try {
|
||||
const notification = await Notification.findOne({ where: { remove_code: { [Op.eq]: remove_code } } })
|
||||
@@ -179,7 +179,7 @@ const eventController = {
|
||||
res.sendStatus(200)
|
||||
},
|
||||
|
||||
async getAll(req, res) {
|
||||
async getAll (req, res) {
|
||||
// this is due how v-calendar shows dates
|
||||
const start = moment()
|
||||
.year(req.params.year)
|
||||
@@ -193,7 +193,7 @@ const eventController = {
|
||||
.endOf('month')
|
||||
|
||||
const shownDays = end.diff(start, 'days')
|
||||
if (shownDays <= 35) end = end.add(1, 'week')
|
||||
if (shownDays <= 35) { end = end.add(1, 'week') }
|
||||
end = end.endOf('week')
|
||||
|
||||
let events = await Event.findAll({
|
||||
@@ -202,10 +202,10 @@ const eventController = {
|
||||
is_visible: true,
|
||||
[Op.or]: [
|
||||
// return all recurrent events
|
||||
{recurrent: { [Op.ne]: null }},
|
||||
{ recurrent: { [Op.ne]: null } },
|
||||
|
||||
// and events in specified range
|
||||
{ start_datetime: { [Op.between]: [start.unix(), end.unix()] }}
|
||||
{ start_datetime: { [Op.between]: [start.unix(), end.unix()] } }
|
||||
]
|
||||
},
|
||||
attributes: { exclude: ['createdAt', 'updatedAt', 'placeId' ] },
|
||||
@@ -223,10 +223,10 @@ const eventController = {
|
||||
})
|
||||
|
||||
// build singular events from a recurrent pattern
|
||||
function createEventsFromRecurrent(e, dueTo=null) {
|
||||
function createEventsFromRecurrent (e, dueTo = null) {
|
||||
const events = []
|
||||
const recurrent = JSON.parse(e.recurrent)
|
||||
if (!recurrent.frequency) return false
|
||||
if (!recurrent.frequency) { return false }
|
||||
|
||||
let cursor = moment(start).startOf('week')
|
||||
const start_date = moment.unix(e.start_datetime)
|
||||
@@ -236,18 +236,18 @@ const eventController = {
|
||||
const type = recurrent.type
|
||||
|
||||
// default frequency is '1d' => each day
|
||||
const toAdd = { n: 1, unit: 'day'}
|
||||
const toAdd = { n: 1, unit: 'day' }
|
||||
cursor.set('hour', start_date.hour()).set('minute', start_date.minutes())
|
||||
|
||||
// each week or 2 (search for the first specified day)
|
||||
if (frequency === '1w' || frequency === '2w') {
|
||||
cursor.add(days[0]-1, 'day')
|
||||
cursor.add(days[0] - 1, 'day')
|
||||
if (frequency === '2w') {
|
||||
const nWeeks = cursor.diff(e.start_datetime, 'w')%2
|
||||
if (!nWeeks) cursor.add(1, 'week')
|
||||
const nWeeks = cursor.diff(e.start_datetime, 'w') % 2
|
||||
if (!nWeeks) { cursor.add(1, 'week') }
|
||||
}
|
||||
toAdd.n = Number(frequency[0])
|
||||
toAdd.unit = 'week';
|
||||
toAdd.unit = 'week'
|
||||
// cursor.set('hour', start_date.hour()).set('minute', start_date.minutes())
|
||||
}
|
||||
|
||||
@@ -263,37 +263,35 @@ const eventController = {
|
||||
}
|
||||
}
|
||||
|
||||
// add event at specified frequency
|
||||
// add event at specified frequency
|
||||
while (true) {
|
||||
let first_event_of_week = cursor.clone()
|
||||
const first_event_of_week = cursor.clone()
|
||||
days.forEach(d => {
|
||||
if (type === 'ordinal') {
|
||||
cursor.date(d)
|
||||
} else {
|
||||
cursor.day(d-1)
|
||||
cursor.day(d - 1)
|
||||
}
|
||||
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) return
|
||||
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) { return }
|
||||
e.start_datetime = cursor.unix()
|
||||
e.end_datetime = e.start_datetime+duration
|
||||
events.push( Object.assign({}, e) )
|
||||
})
|
||||
if (cursor.isAfter(dueTo)) break
|
||||
e.end_datetime = e.start_datetime + duration
|
||||
events.push(Object.assign({}, e))
|
||||
})
|
||||
if (cursor.isAfter(dueTo)) { break }
|
||||
cursor = first_event_of_week.add(toAdd.n, toAdd.unit)
|
||||
}
|
||||
|
||||
|
||||
return events
|
||||
}
|
||||
|
||||
let allEvents = events.filter(e => !e.recurrent)
|
||||
events.filter(e => e.recurrent).forEach(e => {
|
||||
const events = createEventsFromRecurrent(e, end)
|
||||
if (events)
|
||||
allEvents = allEvents.concat(events)
|
||||
if (events) { allEvents = allEvents.concat(events) }
|
||||
})
|
||||
|
||||
// allEvents.sort((a,b) => a.start_datetime-b.start_datetime)
|
||||
res.json(allEvents.sort((a,b) => a.start_datetime-b.start_datetime))
|
||||
res.json(allEvents.sort((a, b) => a.start_datetime - b.start_datetime))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ const ics = require('ics')
|
||||
|
||||
const exportController = {
|
||||
|
||||
async export(req, res) {
|
||||
async export (req, res) {
|
||||
const type = req.params.type
|
||||
const tags = req.query.tags
|
||||
const places = req.query.places
|
||||
@@ -40,12 +40,12 @@ const exportController = {
|
||||
}
|
||||
},
|
||||
|
||||
feed(res, events) {
|
||||
feed (res, events) {
|
||||
res.type('application/rss+xml; charset=UTF-8')
|
||||
res.render('feed/rss.pug', { events, config: process.env, moment })
|
||||
},
|
||||
|
||||
ics(res, events) {
|
||||
ics (res, events) {
|
||||
const eventsMap = events.map(e => {
|
||||
const tmpStart = moment.unix(e.start_datetime)
|
||||
const tmpEnd = moment.unix(e.end_datetime)
|
||||
|
||||
@@ -11,10 +11,10 @@ const settingsController = require('./settings')
|
||||
const federation = require('../../federation/helpers')
|
||||
|
||||
const userController = {
|
||||
async login(req, res) {
|
||||
async login (req, res) {
|
||||
// find the user
|
||||
const user = await User.findOne({ where: {
|
||||
[Op.or]: [
|
||||
[Op.or]: [
|
||||
{ email: req.body.email },
|
||||
{ username: req.body.email }
|
||||
]
|
||||
@@ -44,7 +44,7 @@ const userController = {
|
||||
}
|
||||
},
|
||||
|
||||
async delEvent(req, res) {
|
||||
async delEvent (req, res) {
|
||||
const event = await Event.findByPk(req.params.id)
|
||||
// check if event is mine (or user is admin)
|
||||
if (event && (req.user.is_admin || req.user.id === event.userId)) {
|
||||
@@ -68,7 +68,7 @@ const userController = {
|
||||
},
|
||||
|
||||
// ADD EVENT
|
||||
async addEvent(req, res) {
|
||||
async addEvent (req, res) {
|
||||
const body = req.body
|
||||
|
||||
const eventDetails = {
|
||||
@@ -88,7 +88,7 @@ const userController = {
|
||||
eventDetails.image_path = req.file.filename
|
||||
}
|
||||
|
||||
let event = await Event.create(eventDetails)
|
||||
const event = await Event.create(eventDetails)
|
||||
|
||||
// create place if needed
|
||||
let place
|
||||
@@ -105,7 +105,7 @@ const userController = {
|
||||
if (body.tags) {
|
||||
await Tag.bulkCreate(body.tags.map(t => ({ tag: t })), { ignoreDuplicates: true })
|
||||
const tags = await Tag.findAll({ where: { tag: { [Op.in]: body.tags } } })
|
||||
await Promise.all(tags.map(t => t.update({weigth: Number(t.weigth)+1})))
|
||||
await Promise.all(tags.map(t => t.update({ weigth: Number(t.weigth) + 1 })))
|
||||
await event.addTags(tags)
|
||||
event.tags = tags
|
||||
}
|
||||
@@ -118,17 +118,15 @@ const userController = {
|
||||
// send response to client
|
||||
res.json(event)
|
||||
|
||||
if (req.user)
|
||||
federation.sendEvent(event, req.user)
|
||||
if (req.user) { federation.sendEvent(event, req.user) }
|
||||
|
||||
// res.sendStatus(200)
|
||||
|
||||
// send notification (mastodon/email/confirmation)
|
||||
// notifier.notifyEvent(event.id)
|
||||
|
||||
},
|
||||
|
||||
async updateEvent(req, res) {
|
||||
async updateEvent (req, res) {
|
||||
const body = req.body
|
||||
const event = await Event.findByPk(body.id)
|
||||
if (!req.user.is_admin && event.userId !== req.user.id) {
|
||||
@@ -168,10 +166,10 @@ const userController = {
|
||||
res.json(newEvent)
|
||||
},
|
||||
|
||||
async forgotPassword(req, res) {
|
||||
async forgotPassword (req, res) {
|
||||
const email = req.body.email
|
||||
const user = await User.findOne({ where: { email: { [Op.eq]: email } } })
|
||||
if (!user) return res.sendStatus(200)
|
||||
if (!user) { return res.sendStatus(200) }
|
||||
|
||||
user.recover_code = crypto.randomBytes(16).toString('hex')
|
||||
mail.send(user.email, 'recover', { user, config })
|
||||
@@ -180,25 +178,25 @@ const userController = {
|
||||
res.sendStatus(200)
|
||||
},
|
||||
|
||||
async checkRecoverCode(req, res) {
|
||||
async checkRecoverCode (req, res) {
|
||||
const recover_code = req.body.recover_code
|
||||
if (!recover_code) return res.sendStatus(400)
|
||||
if (!recover_code) { return res.sendStatus(400) }
|
||||
const user = await User.findOne({ where: { recover_code: { [Op.eq]: recover_code } } })
|
||||
if (!user) return res.sendStatus(400)
|
||||
if (!user) { return res.sendStatus(400) }
|
||||
try {
|
||||
await user.update({ recover_code: ''})
|
||||
await user.update({ recover_code: '' })
|
||||
res.sendStatus(200)
|
||||
} catch (e) {
|
||||
res.sendStatus(400)
|
||||
}
|
||||
},
|
||||
|
||||
async updatePasswordWithRecoverCode(req, res) {
|
||||
async updatePasswordWithRecoverCode (req, res) {
|
||||
const recover_code = req.body.recover_code
|
||||
const password = req.body.password
|
||||
if (!recover_code || !password) return res.sendStatus(400)
|
||||
if (!recover_code || !password) { return res.sendStatus(400) }
|
||||
const user = await User.findOne({ where: { recover_code: { [Op.eq]: recover_code } } })
|
||||
if (!user) return res.sendStatus(400)
|
||||
if (!user) { return res.sendStatus(400) }
|
||||
user.recover_code = ''
|
||||
user.password = password
|
||||
try {
|
||||
@@ -209,32 +207,31 @@ const userController = {
|
||||
}
|
||||
},
|
||||
|
||||
current(req, res) {
|
||||
current (req, res) {
|
||||
if (req.user) { res.json(req.user) } else { res.sendStatus(404) }
|
||||
},
|
||||
|
||||
async getAll(req, res) {
|
||||
async getAll (req, res) {
|
||||
const users = await User.findAll({
|
||||
order: [['createdAt', 'DESC']]
|
||||
})
|
||||
res.json(users)
|
||||
},
|
||||
|
||||
async update(req, res) {
|
||||
async update (req, res) {
|
||||
// user to modify
|
||||
user = await User.findByPk(req.body.id)
|
||||
|
||||
if (!user) return res.status(404).json({ success: false, message: 'User not found!' })
|
||||
if (!user) { return res.status(404).json({ success: false, message: 'User not found!' }) }
|
||||
|
||||
if (req.body.id !== req.user.id && !req.user.is_admin) {
|
||||
return res.status(400).json({ succes: false, message: 'Not allowed' })
|
||||
}
|
||||
|
||||
// ensure username to not change if not empty
|
||||
req.body.username = user.username ? user.username : req.body.username
|
||||
req.body.username = user.username ? user.username : req.body.username
|
||||
|
||||
if (!req.body.password)
|
||||
delete req.body.password
|
||||
if (!req.body.password) { delete req.body.password }
|
||||
|
||||
await user.update(req.body)
|
||||
|
||||
@@ -244,9 +241,8 @@ const userController = {
|
||||
res.json(user)
|
||||
},
|
||||
|
||||
|
||||
async register(req, res) {
|
||||
if (!settingsController.settings.allow_registration) return res.sendStatus(404)
|
||||
async register (req, res) {
|
||||
if (!settingsController.settings.allow_registration) { return res.sendStatus(404) }
|
||||
const n_users = await User.count()
|
||||
try {
|
||||
// the first registered user will be an active admin
|
||||
@@ -276,7 +272,7 @@ const userController = {
|
||||
}
|
||||
},
|
||||
|
||||
async create(req, res) {
|
||||
async create (req, res) {
|
||||
try {
|
||||
req.body.is_active = true
|
||||
req.body.recover_code = crypto.randomBytes(16).toString('hex')
|
||||
@@ -288,7 +284,7 @@ const userController = {
|
||||
}
|
||||
},
|
||||
|
||||
async remove(req, res) {
|
||||
async remove (req, res) {
|
||||
try {
|
||||
const user = await User.findByPk(req.params.id)
|
||||
user.destroy()
|
||||
|
||||
Reference in New Issue
Block a user