.
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
const { User, Event, Comment, Tag } = require('../model')
|
||||
const { SHARED_CONF } = require('../../../config')
|
||||
const Mastodon = require('mastodon-api')
|
||||
// const Sequelize = require('sequelize')
|
||||
// const Op = Sequelize.Op
|
||||
const settingsController = require('./settings')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const moment = require('moment')
|
||||
const { event: Event, comment: Comment, tag: Tag } = require('../model')
|
||||
const config = require('../../config').SHARED_CONF
|
||||
const Mastodon = require('mastodon-api')
|
||||
const settingsController = require('./settings')
|
||||
moment.locale('it')
|
||||
|
||||
const botController = {
|
||||
@@ -47,7 +45,7 @@ const botController = {
|
||||
const { access_token, instance } = mastodon_auth
|
||||
const bot = new Mastodon({ access_token, api_url: `https://${instance}/api/v1/` })
|
||||
const status = `${event.title} @ ${event.place.name} ${moment(event.start_datetime).format('ddd, D MMMM HH:mm')} -
|
||||
${event.description.length > 200 ? event.description.substr(0, 200) + '...' : event.description} - ${event.tags.map(t => '#' + t.tag).join(' ')} ${SHARED_CONF.baseurl}/event/${event.id}`
|
||||
${event.description.length > 200 ? event.description.substr(0, 200) + '...' : event.description} - ${event.tags.map(t => '#' + t.tag).join(' ')} ${config.baseurl}/event/${event.id}`
|
||||
|
||||
let media
|
||||
if (event.image_path) {
|
||||
@@ -58,9 +56,9 @@ ${event.description.length > 200 ? event.description.substr(0, 200) + '...' : ev
|
||||
}
|
||||
return bot.post('statuses', { status, visibility: 'direct', media_ids: media ? [media.data.id] : [] })
|
||||
},
|
||||
|
||||
// TOFIX: enable message deletion
|
||||
async message (msg) {
|
||||
console.log(msg)
|
||||
console.log(msg.data.accounts)
|
||||
const replyid = msg.data.in_reply_to_id || msg.data.last_status.in_reply_to_id
|
||||
if (!replyid) return
|
||||
const event = await Event.findOne({ where: { activitypub_id: replyid } })
|
||||
@@ -71,9 +69,9 @@ ${event.description.length > 200 ? event.description.substr(0, 200) + '...' : ev
|
||||
}
|
||||
const comment = await Comment.create({
|
||||
activitypub_id: msg.data.last_status.id,
|
||||
text: msg.data.last_status.content,
|
||||
// text: msg.data.last_status.content,
|
||||
data: msg.data,
|
||||
author: msg.data.accounts[0].username
|
||||
// author: msg.data.accounts[0].username
|
||||
})
|
||||
event.addComment(comment)
|
||||
// const comment = await Comment.findOne( { where: {activitypub_id: msg.data.in_reply_to}} )
|
||||
@@ -93,5 +91,5 @@ ${event.description.length > 200 ? event.description.substr(0, 200) + '...' : ev
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(botController.initialize, 2000)
|
||||
// setTimeout(botController.initialize, 2000)
|
||||
module.exports = botController
|
||||
|
||||
@@ -2,7 +2,7 @@ const crypto = require('crypto')
|
||||
const moment = require('moment')
|
||||
const { Op } = require('sequelize')
|
||||
const lodash = require('lodash')
|
||||
const { User, Event, Comment, Tag, Place, Notification } = require('../model')
|
||||
const { event: Event, comment: Comment, tag: Tag, place: Place, notification: Notification } = require('../models')
|
||||
const Sequelize = require('sequelize')
|
||||
|
||||
const eventController = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const { Event, Comment, Tag, Place } = require('../model')
|
||||
const { event: Event, place: Place } = require('../models')
|
||||
const { Op } = require('sequelize')
|
||||
const config = require('../../../config')
|
||||
const config = require('../../config').SHARED_CONF
|
||||
const moment = require('moment')
|
||||
const ics = require('ics')
|
||||
|
||||
@@ -65,7 +65,6 @@ const exportController = {
|
||||
})
|
||||
res.type('text/calendar; charset=UTF-8')
|
||||
const { error, value } = ics.createEvents(eventsMap)
|
||||
console.log(error, value)
|
||||
res.send(value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
const { Settings } = require('../model')
|
||||
const { SHARED_CONF } = require('../../../config')
|
||||
const Mastodon = require('mastodon-api')
|
||||
const { setting: Setting } = require('../models')
|
||||
const config = require('../../config').SHARED_CONF
|
||||
|
||||
const settingsController = {
|
||||
|
||||
async setAdminSetting (key, value) {
|
||||
await Settings.findOrCreate({ where: { key },
|
||||
await Setting.findOrCreate({ where: { key },
|
||||
defaults: { value } })
|
||||
.spread((settings, created) => {
|
||||
if (!created) return settings.update({ value })
|
||||
@@ -16,11 +17,15 @@ const settingsController = {
|
||||
res.json(settings)
|
||||
},
|
||||
|
||||
async getConfig (req, res) {
|
||||
res.json(config)
|
||||
},
|
||||
|
||||
async getAuthURL(req, res) {
|
||||
const instance = req.body.instance
|
||||
const callback = `${SHARED_CONF.baseurl}/api/settings/oauth`
|
||||
const callback = `${config.baseurl}/api/settings/oauth`
|
||||
const { client_id, client_secret } = await Mastodon.createOAuthApp(`https://${instance}/api/v1/apps`,
|
||||
SHARED_CONF.title, 'read write', callback)
|
||||
config.title, 'read write', callback)
|
||||
const url = await Mastodon.getAuthorizationUrl(client_id, client_secret,
|
||||
`https://${instance}`, 'read write', callback)
|
||||
|
||||
@@ -31,19 +36,16 @@ const settingsController = {
|
||||
async code(req, res) {
|
||||
const code = req.query.code
|
||||
let client_id, client_secret, instance
|
||||
const callback = `${SHARED_CONF.baseurl}/api/settings/oauth`
|
||||
console.error('sono dentro CODEEEEEEEEEE', code)
|
||||
const callback = `${config.baseurl}/api/settings/oauth`
|
||||
|
||||
const settings = await settingsController.settings()
|
||||
|
||||
console.log(settings);
|
||||
({ client_id, client_secret, instance } = settings.mastodon_auth)
|
||||
|
||||
try {
|
||||
const token = await Mastodon.getAccessToken(client_id, client_secret, code,
|
||||
`https://${instance}`, callback)
|
||||
const mastodon_auth = { client_id, client_secret, access_token: token, instance }
|
||||
console.error(mastodon_auth)
|
||||
await settingsController.setAdminSetting('mastodon_auth', mastodon_auth)
|
||||
|
||||
res.redirect('/admin')
|
||||
@@ -53,13 +55,11 @@ const settingsController = {
|
||||
},
|
||||
|
||||
async settings () {
|
||||
const settings = await Settings.findAll()
|
||||
const map = {}
|
||||
settings.forEach(setting => {
|
||||
map[setting.key] = setting.value
|
||||
})
|
||||
return map
|
||||
}
|
||||
console.error('ma sono dentro settings ?!?!')
|
||||
const settings = await Setting.findAll()
|
||||
return settings
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
module.exports = settingsController
|
||||
|
||||
@@ -4,14 +4,14 @@ const crypto = require('crypto')
|
||||
const jwt = require('jsonwebtoken')
|
||||
const { Op } = require('sequelize')
|
||||
const jsonwebtoken = require('jsonwebtoken')
|
||||
const User = require('../models/user')
|
||||
const { SECRET_CONF, SHARED_CONF } = require('../../../config')
|
||||
const { SECRET_CONF, SHARED_CONF } = require('../../config')
|
||||
const mail = require('../mail')
|
||||
const { Event, Tag, Place } = require('../models/event')
|
||||
const { user: User, event: Event, tag: Tag, place: Place } = require('../models')
|
||||
const eventController = require('./event')
|
||||
|
||||
const userController = {
|
||||
async login(req, res) {
|
||||
|
||||
// find the user
|
||||
const user = await User.findOne({ where: { email: { [Op.eq]: req.body && req.body.email } } })
|
||||
if (!user) {
|
||||
@@ -33,7 +33,7 @@ const userController = {
|
||||
},
|
||||
SECRET_CONF.secret
|
||||
)
|
||||
|
||||
|
||||
res.json({token: accessToken})
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,9 @@ const userController = {
|
||||
eventDetails.image_path = req.file.filename
|
||||
}
|
||||
|
||||
console.error('prima la creazione di evento')
|
||||
let event = await Event.create(eventDetails)
|
||||
console.error('dopo la creazione di evento')
|
||||
|
||||
// create place if needs to
|
||||
let place
|
||||
@@ -195,7 +197,10 @@ const userController = {
|
||||
},
|
||||
|
||||
async current(req, res) {
|
||||
res.json(req.user)
|
||||
if (req.user)
|
||||
res.json(req.user)
|
||||
else
|
||||
res.sendStatus(404)
|
||||
},
|
||||
|
||||
async getAll(req, res) {
|
||||
@@ -219,7 +224,6 @@ const userController = {
|
||||
},
|
||||
|
||||
async register(req, res) {
|
||||
|
||||
const n_users = await User.count()
|
||||
try {
|
||||
|
||||
@@ -234,14 +238,17 @@ const userController = {
|
||||
try {
|
||||
mail.send([user.email, SECRET_CONF.admin], 'register', { user, config: SHARED_CONF })
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return res.status(400).json(e)
|
||||
}
|
||||
const payload = { email: user.email }
|
||||
const payload = {
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
scope: [user.is_admin ? 'admin' : 'user']
|
||||
}
|
||||
const token = jwt.sign(payload, SECRET_CONF.secret)
|
||||
res.json({ user, token })
|
||||
res.json({ token })
|
||||
// res.redirect('/')
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
res.status(404).json(e)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user