[fedi] instances moderation
This commit is contained in:
@@ -73,15 +73,6 @@ const eventController = {
|
||||
return ret
|
||||
},
|
||||
|
||||
async updateTag (req, res) {
|
||||
const tag = await Tag.findByPk(req.body.tag)
|
||||
if (tag) {
|
||||
res.json(await tag.update(req.body))
|
||||
} else {
|
||||
res.sendStatus(404)
|
||||
}
|
||||
},
|
||||
|
||||
async updatePlace (req, res) {
|
||||
const place = await Place.findByPk(req.body.id)
|
||||
await place.update(req.body)
|
||||
|
||||
@@ -29,7 +29,7 @@ const exportController = {
|
||||
start_datetime: { [Op.gte]: yesterday },
|
||||
...where
|
||||
},
|
||||
include: [ { model: Tag, ...where_tags }, { model: Place, attributes: ['name', 'id', 'address'] }]
|
||||
include: [{ model: Tag, ...where_tags }, { model: Place, attributes: ['name', 'id', 'address'] }]
|
||||
})
|
||||
|
||||
switch (type) {
|
||||
|
||||
23
server/api/controller/instances.js
Normal file
23
server/api/controller/instances.js
Normal file
@@ -0,0 +1,23 @@
|
||||
const Sequelize = require('sequelize')
|
||||
const { fed_users: FedUsers, instances: Instances } = require('../models')
|
||||
|
||||
const instancesController = {
|
||||
async getAll (req, res) {
|
||||
const instances = await Instances.findAll({
|
||||
attributes: {
|
||||
include: [[Sequelize.fn('count', Sequelize.col('domain')), 'users']]
|
||||
},
|
||||
group: ['domain'],
|
||||
include: [{ model: FedUsers, attributes: [] }]
|
||||
})
|
||||
return res.json(instances)
|
||||
},
|
||||
async toggleBlock (req, res) {
|
||||
const instance = await Instances.findByPk(req.body.instance)
|
||||
if (!instance) { return res.status(404).send('Not found') }
|
||||
await instance.update({ blocked: req.body.blocked })
|
||||
return res.json(instance)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = instancesController
|
||||
@@ -2,14 +2,13 @@ const express = require('express')
|
||||
const multer = require('multer')
|
||||
const cookieParser = require('cookie-parser')
|
||||
const bodyParser = require('body-parser')
|
||||
const expressJwt = require('express-jwt')
|
||||
const config = require('config')
|
||||
|
||||
const { isAuth, isAdmin } = require('./auth')
|
||||
const eventController = require('./controller/event')
|
||||
const exportController = require('./controller/export')
|
||||
const userController = require('./controller/user')
|
||||
const settingsController = require('./controller/settings')
|
||||
const instancesController = require('./controller/instances')
|
||||
|
||||
const storage = require('./storage')
|
||||
const upload = multer({ storage })
|
||||
@@ -84,6 +83,9 @@ api.get('/export/:type', exportController.export)
|
||||
// get events in this range
|
||||
api.get('/event/:month/:year', eventController.getAll)
|
||||
|
||||
api.get('/instances', isAdmin, instancesController.getAll)
|
||||
api.post('/instances/toggle_block', isAdmin, instancesController.toggleBlock)
|
||||
|
||||
// Handle 404
|
||||
api.use((req, res) => {
|
||||
debug('404 Page not found: %s', req.path)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
'use strict'
|
||||
module.exports = (sequelize, DataTypes) => {
|
||||
const instances = sequelize.define('instances', {
|
||||
domain: DataTypes.STRING,
|
||||
domain: {
|
||||
primaryKey: true,
|
||||
allowNull: false,
|
||||
type: DataTypes.STRING
|
||||
},
|
||||
name: DataTypes.STRING,
|
||||
blocked: DataTypes.BOOLEAN,
|
||||
data: DataTypes.JSON
|
||||
|
||||
@@ -15,7 +15,10 @@ module.exports = (sequelize, DataTypes) => {
|
||||
allowNull: false
|
||||
},
|
||||
display_name: DataTypes.STRING,
|
||||
settings: DataTypes.JSON,
|
||||
settings: {
|
||||
type: DataTypes.JSON,
|
||||
defaultValue: '{}'
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING,
|
||||
unique: { msg: 'error.email_taken' },
|
||||
|
||||
Reference in New Issue
Block a user