mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat(writeapi): admin settings update route
This commit is contained in:
@@ -1022,6 +1022,32 @@ paths:
|
|||||||
response:
|
response:
|
||||||
type: object
|
type: object
|
||||||
properties: {}
|
properties: {}
|
||||||
|
/admin/settings/{setting}:
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- admin
|
||||||
|
summary: update configuration setting
|
||||||
|
description: This operation updates a configuration setting in the backend. The calling user must have the `admin:settings` privilege (or be a superadmin) in order for this call to proceed.
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: setting
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: backend id of the setting to update
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Admin setting updated
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
$ref: '#/components/schemas/Status'
|
||||||
|
response:
|
||||||
|
type: object
|
||||||
|
properties: {}
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
Status:
|
Status:
|
||||||
|
|||||||
16
src/controllers/write/admin.js
Normal file
16
src/controllers/write/admin.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const meta = require('../../meta');
|
||||||
|
|
||||||
|
const helpers = require('../helpers');
|
||||||
|
|
||||||
|
const Admin = module.exports;
|
||||||
|
|
||||||
|
Admin.updateSetting = async (req, res) => {
|
||||||
|
if (!res.locals.privileges['admin:settings']) {
|
||||||
|
return helpers.formatApiResponse(403, res);
|
||||||
|
}
|
||||||
|
|
||||||
|
await meta.configs.set(req.params.setting, req.body.value);
|
||||||
|
helpers.formatApiResponse(200, res);
|
||||||
|
};
|
||||||
@@ -7,3 +7,4 @@ Write.groups = require('./groups');
|
|||||||
Write.categories = require('./categories');
|
Write.categories = require('./categories');
|
||||||
Write.topics = require('./topics');
|
Write.topics = require('./topics');
|
||||||
Write.posts = require('./posts');
|
Write.posts = require('./posts');
|
||||||
|
Write.admin = require('./admin');
|
||||||
|
|||||||
16
src/routes/write/admin.js
Normal file
16
src/routes/write/admin.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const router = require('express').Router();
|
||||||
|
const middleware = require('../../middleware');
|
||||||
|
const controllers = require('../../controllers');
|
||||||
|
const routeHelpers = require('../helpers');
|
||||||
|
|
||||||
|
const setupApiRoute = routeHelpers.setupApiRoute;
|
||||||
|
|
||||||
|
module.exports = function () {
|
||||||
|
const middlewares = [middleware.authenticate];
|
||||||
|
|
||||||
|
setupApiRoute(router, '/settings/:setting', middleware, [...middlewares, middleware.checkRequired.bind(null, ['value']), middleware.exposePrivilegeSet], 'put', controllers.write.admin.updateSetting);
|
||||||
|
|
||||||
|
return router;
|
||||||
|
};
|
||||||
@@ -25,7 +25,7 @@ Write.reload = (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/util', require('./util')());
|
router.use('/api/v3/admin', require('./admin')());
|
||||||
|
|
||||||
router.get('/api/v3/ping', function (req, res) {
|
router.get('/api/v3/ping', function (req, res) {
|
||||||
helpers.formatApiResponse(200, res, {
|
helpers.formatApiResponse(200, res, {
|
||||||
|
|||||||
Reference in New Issue
Block a user