mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
@@ -144,7 +144,7 @@ helpers.notAllowed = async function (req, res, error) {
|
||||
};
|
||||
|
||||
helpers.redirect = function (res, url, permanent) {
|
||||
if (res.locals.isAPI) {
|
||||
if (res.locals.isAPI && !url.startsWith('/api/v3/')) {
|
||||
res.set('X-Redirect', encodeURI(url)).status(200).json(url);
|
||||
} else {
|
||||
res.redirect(permanent ? 308 : 307, relative_path + encodeURI(url));
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const api = require('../../api');
|
||||
const user = require('../../user');
|
||||
const meta = require('../../meta');
|
||||
const privileges = require('../../privileges');
|
||||
const utils = require('../../utils');
|
||||
@@ -16,6 +17,17 @@ const hasAdminPrivilege = async (uid, privilege) => {
|
||||
}
|
||||
};
|
||||
|
||||
Users.redirectBySlug = async (req, res) => {
|
||||
const uid = await user.getUidByUserslug(req.params.userslug);
|
||||
|
||||
if (uid) {
|
||||
const path = req.path.split('/').slice(3).join('/');
|
||||
helpers.redirect(res, `/api/v3/users/${uid}/${path}`, false);
|
||||
} else {
|
||||
helpers.formatApiResponse(404, res);
|
||||
}
|
||||
};
|
||||
|
||||
Users.create = async (req, res) => {
|
||||
await hasAdminPrivilege(req.uid, 'users');
|
||||
const userObj = await api.users.create(req, req.body);
|
||||
|
||||
@@ -33,6 +33,9 @@ function authenticatedRoutes() {
|
||||
|
||||
setupApiRoute(router, 'post', '/:uid/tokens', [...middlewares, middleware.assert.user], controllers.write.users.generateToken);
|
||||
setupApiRoute(router, 'delete', '/:uid/tokens/:token', [...middlewares, middleware.assert.user], controllers.write.users.deleteToken);
|
||||
|
||||
// Shorthand route to access user routes by userslug
|
||||
router.all('/+bySlug/:userslug*?', [...middlewares], controllers.write.users.redirectBySlug);
|
||||
}
|
||||
|
||||
module.exports = function () {
|
||||
|
||||
Reference in New Issue
Block a user