mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: stub code for v3 chats api
This commit is contained in:
49
src/controllers/write/chats.js
Normal file
49
src/controllers/write/chats.js
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const api = require('../../api');
|
||||||
|
|
||||||
|
const helpers = require('../helpers');
|
||||||
|
|
||||||
|
const Chats = module.exports;
|
||||||
|
|
||||||
|
Chats.list = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.create = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.exists = async (req, res) => {
|
||||||
|
helpers.formatApiResponse(200, res);
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.get = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.post = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.users = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.invite = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.kick = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.message = {};
|
||||||
|
Chats.messages.edit = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
|
|
||||||
|
Chats.messages.delete = async (req, res) => {
|
||||||
|
// ...
|
||||||
|
};
|
||||||
@@ -14,6 +14,7 @@ const user = require('../user');
|
|||||||
const groups = require('../groups');
|
const groups = require('../groups');
|
||||||
const topics = require('../topics');
|
const topics = require('../topics');
|
||||||
const posts = require('../posts');
|
const posts = require('../posts');
|
||||||
|
const messaging = require('../messaging');
|
||||||
const slugify = require('../slugify');
|
const slugify = require('../slugify');
|
||||||
|
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
@@ -104,3 +105,20 @@ Assert.folderName = helpers.try(async (req, res, next) => {
|
|||||||
|
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Assert.room = helpers.try(async (req, res, next) => {
|
||||||
|
const [exists, inRoom] = await Promise.all([
|
||||||
|
await messaging.roomExists(req.params.roomId),
|
||||||
|
await messaging.isUserInRoom(req.uid, req.params.roomId),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!exists) {
|
||||||
|
return controllerHelpers.formatApiResponse(404, res, new Error('[[error:chat-room-does-not-exist]]'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inRoom) {
|
||||||
|
return controllerHelpers.formatApiResponse(403, res, new Error('[[error:no-privileges]]'));
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|||||||
@@ -133,6 +133,14 @@ module.exports = function (middleware) {
|
|||||||
controllers.helpers.notAllowed(req, res);
|
controllers.helpers.notAllowed(req, res);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
middleware.canChat = helpers.try(async (req, res, next) => {
|
||||||
|
const canChat = await privileges.global.can('chat', req.uid);
|
||||||
|
if (canChat) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
controllers.helpers.notAllowed(req, res);
|
||||||
|
});
|
||||||
|
|
||||||
middleware.checkAccountPermissions = helpers.try(async (req, res, next) => {
|
middleware.checkAccountPermissions = helpers.try(async (req, res, next) => {
|
||||||
// This middleware ensures that only the requested user and admins can pass
|
// This middleware ensures that only the requested user and admins can pass
|
||||||
|
|
||||||
|
|||||||
29
src/routes/write/chats.js
Normal file
29
src/routes/write/chats.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const router = require('express').Router();
|
||||||
|
const middleware = require('../../middleware');
|
||||||
|
const controllers = require('../../controllers');
|
||||||
|
const routeHelpers = require('../helpers');
|
||||||
|
|
||||||
|
const { setupApiRoute } = routeHelpers;
|
||||||
|
|
||||||
|
module.exports = function () {
|
||||||
|
const middlewares = [middleware.ensureLoggedIn, middleware.canChat];
|
||||||
|
|
||||||
|
setupApiRoute(router, 'get', '/', [...middlewares], controllers.write.chats.list);
|
||||||
|
setupApiRoute(router, 'post', '/', [...middlewares, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.create);
|
||||||
|
|
||||||
|
setupApiRoute(router, 'head', '/:roomId', [...middlewares, middleware.assert.room], controllers.write.chats.exists);
|
||||||
|
setupApiRoute(router, 'get', '/:roomId', [...middlewares, middleware.assert.room], controllers.write.chats.get);
|
||||||
|
setupApiRoute(router, 'post', '/:roomId', [...middlewares, middleware.assert.room], controllers.write.chats.post);
|
||||||
|
// no route for room deletion, reserved just in case...
|
||||||
|
|
||||||
|
setupApiRoute(router, 'get', '/:roomId/users', [...middlewares, middleware.assert.room], controllers.write.chats.users);
|
||||||
|
setupApiRoute(router, 'put', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.invite);
|
||||||
|
setupApiRoute(router, 'delete', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.kick);
|
||||||
|
|
||||||
|
setupApiRoute(router, 'put', '/:roomId/:mid', [...middlewares, middleware.assert.room], controllers.write.chats.messages.edit);
|
||||||
|
setupApiRoute(router, 'delete', '/:roomId/:mid', [...middlewares, middleware.assert.room], controllers.write.chats.messages.delete);
|
||||||
|
|
||||||
|
return router;
|
||||||
|
};
|
||||||
@@ -37,6 +37,7 @@ Write.reload = async (params) => {
|
|||||||
router.use('/api/v3/categories', require('./categories')());
|
router.use('/api/v3/categories', require('./categories')());
|
||||||
router.use('/api/v3/topics', require('./topics')());
|
router.use('/api/v3/topics', require('./topics')());
|
||||||
router.use('/api/v3/posts', require('./posts')());
|
router.use('/api/v3/posts', require('./posts')());
|
||||||
|
router.use('/api/v3/chats', require('./chats')());
|
||||||
router.use('/api/v3/flags', require('./flags')());
|
router.use('/api/v3/flags', require('./flags')());
|
||||||
router.use('/api/v3/admin', require('./admin')());
|
router.use('/api/v3/admin', require('./admin')());
|
||||||
router.use('/api/v3/files', require('./files')());
|
router.use('/api/v3/files', require('./files')());
|
||||||
|
|||||||
Reference in New Issue
Block a user