mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat(api): #9123, migrate rest of the getObject controllers to Write API
This commit is contained in:
@@ -2,9 +2,22 @@
|
|||||||
|
|
||||||
const categories = require('../categories');
|
const categories = require('../categories');
|
||||||
const events = require('../events');
|
const events = require('../events');
|
||||||
|
const privileges = require('../privileges');
|
||||||
|
|
||||||
const categoriesAPI = module.exports;
|
const categoriesAPI = module.exports;
|
||||||
|
|
||||||
|
categoriesAPI.get = async function (caller, data) {
|
||||||
|
const [userPrivileges, category] = await Promise.all([
|
||||||
|
privileges.categories.get(data.cid, caller.uid),
|
||||||
|
categories.getCategoryData(data.cid),
|
||||||
|
]);
|
||||||
|
if (!category || !userPrivileges.read) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return category;
|
||||||
|
};
|
||||||
|
|
||||||
categoriesAPI.create = async function (caller, data) {
|
categoriesAPI.create = async function (caller, data) {
|
||||||
const response = await categories.create(data);
|
const response = await categories.create(data);
|
||||||
const categoryObjs = await categories.getCategories([response.cid], caller.uid);
|
const categoryObjs = await categories.getCategories([response.cid], caller.uid);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ const user = require('../user');
|
|||||||
const topics = require('../topics');
|
const topics = require('../topics');
|
||||||
const posts = require('../posts');
|
const posts = require('../posts');
|
||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
|
const privileges = require('../privileges');
|
||||||
|
|
||||||
const apiHelpers = require('./helpers');
|
const apiHelpers = require('./helpers');
|
||||||
const doTopicAction = apiHelpers.doTopicAction;
|
const doTopicAction = apiHelpers.doTopicAction;
|
||||||
@@ -13,6 +14,18 @@ const socketHelpers = require('../socket.io/helpers');
|
|||||||
|
|
||||||
const topicsAPI = module.exports;
|
const topicsAPI = module.exports;
|
||||||
|
|
||||||
|
topicsAPI.get = async function (caller, data) {
|
||||||
|
const [userPrivileges, topic] = await Promise.all([
|
||||||
|
privileges.topics.get(data.tid, caller.uid),
|
||||||
|
topics.getTopicData(data.tid),
|
||||||
|
]);
|
||||||
|
if (!topic || !userPrivileges.read || !userPrivileges['topics:read'] || (topic.deleted && !userPrivileges.view_deleted)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return topic;
|
||||||
|
};
|
||||||
|
|
||||||
topicsAPI.create = async function (caller, data) {
|
topicsAPI.create = async function (caller, data) {
|
||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error('[[error:invalid-data]]');
|
throw new Error('[[error:invalid-data]]');
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ const winston = require('winston');
|
|||||||
|
|
||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
const topics = require('../topics');
|
|
||||||
const categories = require('../categories');
|
const categories = require('../categories');
|
||||||
const privileges = require('../privileges');
|
|
||||||
const plugins = require('../plugins');
|
const plugins = require('../plugins');
|
||||||
const translator = require('../translator');
|
const translator = require('../translator');
|
||||||
const languages = require('../languages');
|
const languages = require('../languages');
|
||||||
@@ -120,29 +118,8 @@ apiController.getConfig = async function (req, res) {
|
|||||||
|
|
||||||
// TODO: Deprecate these four controllers in 1.17.0
|
// TODO: Deprecate these four controllers in 1.17.0
|
||||||
apiController.getPostData = async (pid, uid) => api.posts.get({ uid }, { pid });
|
apiController.getPostData = async (pid, uid) => api.posts.get({ uid }, { pid });
|
||||||
|
apiController.getTopicData = async (tid, uid) => api.topics.get({ uid }, { tid });
|
||||||
apiController.getTopicData = async function (tid, uid) {
|
apiController.getCategoryData = async (cid, uid) => api.categories.get({ uid }, { cid });
|
||||||
const [userPrivileges, topic] = await Promise.all([
|
|
||||||
privileges.topics.get(tid, uid),
|
|
||||||
topics.getTopicData(tid),
|
|
||||||
]);
|
|
||||||
if (!topic || !userPrivileges.read || !userPrivileges['topics:read'] || (topic.deleted && !userPrivileges.view_deleted)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return topic;
|
|
||||||
};
|
|
||||||
|
|
||||||
apiController.getCategoryData = async function (cid, uid) {
|
|
||||||
const [userPrivileges, category] = await Promise.all([
|
|
||||||
privileges.categories.get(cid, uid),
|
|
||||||
categories.getCategoryData(cid),
|
|
||||||
]);
|
|
||||||
if (!category || !userPrivileges.read) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return category;
|
|
||||||
};
|
|
||||||
|
|
||||||
apiController.getObject = async function (req, res, next) {
|
apiController.getObject = async function (req, res, next) {
|
||||||
const methods = {
|
const methods = {
|
||||||
post: apiController.getPostData,
|
post: apiController.getPostData,
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ const categories = require('../categories');
|
|||||||
const privileges = require('../privileges');
|
const privileges = require('../privileges');
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
const topics = require('../topics');
|
const topics = require('../topics');
|
||||||
const apiController = require('../controllers/api');
|
const api = require('../api');
|
||||||
|
const sockets = require('.');
|
||||||
|
|
||||||
const SocketCategories = module.exports;
|
const SocketCategories = module.exports;
|
||||||
|
|
||||||
@@ -147,7 +148,9 @@ SocketCategories.isModerator = async function (socket, cid) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketCategories.getCategory = async function (socket, cid) {
|
SocketCategories.getCategory = async function (socket, cid) {
|
||||||
return await apiController.getCategoryData(cid, socket.uid);
|
sockets.warnDeprecated(socket, 'GET /api/v3/categories/:tid');
|
||||||
|
return await api.categories.get(socket, { cid });
|
||||||
|
// return await apiController.getCategoryData(cid, socket.uid);
|
||||||
};
|
};
|
||||||
|
|
||||||
require('../promisify')(SocketCategories);
|
require('../promisify')(SocketCategories);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ const api = require('../api');
|
|||||||
const topics = require('../topics');
|
const topics = require('../topics');
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
const apiController = require('../controllers/api');
|
|
||||||
const privileges = require('../privileges');
|
const privileges = require('../privileges');
|
||||||
const sockets = require('.');
|
const sockets = require('.');
|
||||||
|
|
||||||
@@ -96,7 +95,8 @@ SocketTopics.isModerator = async function (socket, tid) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SocketTopics.getTopic = async function (socket, tid) {
|
SocketTopics.getTopic = async function (socket, tid) {
|
||||||
return await apiController.getTopicData(tid, socket.uid);
|
sockets.warnDeprecated(socket, 'GET /api/v3/topics/:tid');
|
||||||
|
return await api.topics.get(socket, { tid });
|
||||||
};
|
};
|
||||||
|
|
||||||
require('../promisify')(SocketTopics);
|
require('../promisify')(SocketTopics);
|
||||||
|
|||||||
Reference in New Issue
Block a user