mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: user exist route in write api
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
|
||||
|
||||
define('forum/register', [
|
||||
'translator', 'zxcvbn', 'slugify', 'jquery-form',
|
||||
], function (translator, zxcvbn, slugify) {
|
||||
'translator', 'zxcvbn', 'slugify', 'api', 'jquery-form',
|
||||
], function (translator, zxcvbn, slugify, api) {
|
||||
var Register = {};
|
||||
var validationError = false;
|
||||
var successIcon = '';
|
||||
@@ -159,21 +159,14 @@ define('forum/register', [
|
||||
} else if (!utils.isUserNameValid(username) || !slugify(username)) {
|
||||
showError(username_notify, '[[error:invalid-username]]');
|
||||
} else {
|
||||
socket.emit('user.exists', {
|
||||
username: username,
|
||||
}, function (err, exists) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
if (exists) {
|
||||
api.head(`/users/bySlug/${username}`, {})
|
||||
.then(() => {
|
||||
showError(username_notify, '[[error:username-taken]]');
|
||||
} else {
|
||||
})
|
||||
.catch(() => {
|
||||
showSuccess(username_notify, successIcon);
|
||||
}
|
||||
|
||||
callback();
|
||||
});
|
||||
})
|
||||
.finally(callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,14 +13,17 @@ define('api', () => {
|
||||
$.ajax(options)
|
||||
.done((res) => {
|
||||
cb(null,
|
||||
res.hasOwnProperty('status') && res.hasOwnProperty('response') ?
|
||||
res.response : res
|
||||
res && res.hasOwnProperty('status') && res.hasOwnProperty('response') ?
|
||||
res.response : (res || {})
|
||||
);
|
||||
})
|
||||
.fail((ev) => {
|
||||
const errMessage = ev.responseJSON.status && ev.responseJSON.status.message ?
|
||||
let errMessage;
|
||||
if (ev.responseJSON) {
|
||||
errMessage = ev.responseJSON.status && ev.responseJSON.status.message ?
|
||||
ev.responseJSON.status.message :
|
||||
ev.responseJSON.error;
|
||||
}
|
||||
|
||||
cb(new Error(errMessage || ev.statusText));
|
||||
});
|
||||
@@ -39,10 +42,15 @@ define('api', () => {
|
||||
});
|
||||
}
|
||||
|
||||
api.get = (route, payload, onSuccess) => call({
|
||||
api.get = (route, payload = {}, onSuccess) => call({
|
||||
url: route + (Object.keys(payload).length ? ('?' + $.param(payload)) : ''),
|
||||
}, onSuccess);
|
||||
|
||||
api.head = (route, payload, onSuccess) => call({
|
||||
url: route + (Object.keys(payload).length ? ('?' + $.param(payload)) : ''),
|
||||
method: 'head',
|
||||
}, onSuccess);
|
||||
|
||||
api.post = (route, payload, onSuccess) => call({
|
||||
url: route,
|
||||
method: 'post',
|
||||
|
||||
@@ -341,6 +341,10 @@ helpers.getHomePageRoutes = async function (uid) {
|
||||
};
|
||||
|
||||
helpers.formatApiResponse = async (statusCode, res, payload) => {
|
||||
if (res.req.method === 'HEAD') {
|
||||
return res.sendStatus(statusCode);
|
||||
}
|
||||
|
||||
if (String(statusCode).startsWith('2')) {
|
||||
res.status(statusCode).json({
|
||||
status: {
|
||||
|
||||
@@ -30,6 +30,8 @@ require('./user/ban')(SocketUser);
|
||||
require('./user/registration')(SocketUser);
|
||||
|
||||
SocketUser.exists = async function (socket, data) {
|
||||
sockets.warnDeprecated(socket, 'HEAD /api/v3/users/bySlug/:userslug');
|
||||
|
||||
if (!data || !data.username) {
|
||||
throw new Error('[[error:invalid-data]]');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user