This commit is contained in:
lesion
2019-06-06 23:54:32 +02:00
parent 745b9247c9
commit 3ca818f016
66 changed files with 989 additions and 532 deletions

View File

@@ -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

View File

@@ -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 = {

View File

@@ -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)
}
}

View File

@@ -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

View File

@@ -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)
}
}