feat: user exist route in write api

v1.18.x
Julian Lam 4 years ago
parent 6b196a207f
commit 1446cec77f

@ -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 ?
ev.responseJSON.status.message :
ev.responseJSON.error;
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]]');
}

Loading…
Cancel
Save