mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
breaking: remove socket.emit('user.search')
This commit is contained in:
@@ -312,6 +312,9 @@ async function canDeleteUids(uids) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
usersAPI.search = async function (caller, data) {
|
usersAPI.search = async function (caller, data) {
|
||||||
|
if (!data) {
|
||||||
|
throw new Error('[[error:invalid-data]]');
|
||||||
|
}
|
||||||
const [allowed, isPrivileged] = await Promise.all([
|
const [allowed, isPrivileged] = await Promise.all([
|
||||||
privileges.global.can('search:users', caller.uid),
|
privileges.global.can('search:users', caller.uid),
|
||||||
user.isPrivileged(caller.uid),
|
user.isPrivileged(caller.uid),
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ const sockets = require('.');
|
|||||||
const SocketUser = module.exports;
|
const SocketUser = module.exports;
|
||||||
|
|
||||||
require('./user/profile')(SocketUser);
|
require('./user/profile')(SocketUser);
|
||||||
require('./user/search')(SocketUser);
|
|
||||||
require('./user/status')(SocketUser);
|
require('./user/status')(SocketUser);
|
||||||
require('./user/picture')(SocketUser);
|
require('./user/picture')(SocketUser);
|
||||||
require('./user/ban')(SocketUser);
|
require('./user/ban')(SocketUser);
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
const pagination = require('../../pagination');
|
|
||||||
const api = require('../../api');
|
|
||||||
const sockets = require('..');
|
|
||||||
|
|
||||||
module.exports = function (SocketUser) {
|
|
||||||
SocketUser.search = async function (socket, data) {
|
|
||||||
sockets.warnDeprecated(socket, 'GET /api/users');
|
|
||||||
if (!data) {
|
|
||||||
throw new Error('[[error:invalid-data]]');
|
|
||||||
}
|
|
||||||
const result = api.users.search(socket, data);
|
|
||||||
result.pagination = pagination.create(data.page, result.pageCount);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
112
test/user.js
112
test/user.js
@@ -19,8 +19,8 @@ const Password = require('../src/password');
|
|||||||
const groups = require('../src/groups');
|
const groups = require('../src/groups');
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
const meta = require('../src/meta');
|
const meta = require('../src/meta');
|
||||||
const events = require('../src/events');
|
|
||||||
const socketUser = require('../src/socket.io/user');
|
const socketUser = require('../src/socket.io/user');
|
||||||
|
const apiUser = require('../src/api/users');
|
||||||
|
|
||||||
describe('User', () => {
|
describe('User', () => {
|
||||||
let userData;
|
let userData;
|
||||||
@@ -360,69 +360,73 @@ describe('User', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should search user', (done) => {
|
it('should search user', async () => {
|
||||||
socketUser.search({ uid: testUid }, { query: 'john' }, (err, searchData) => {
|
const searchData = await apiUser.search({ uid: testUid }, { query: 'john' });
|
||||||
assert.ifError(err);
|
assert.equal(searchData.users[0].username, 'John Smith');
|
||||||
assert.equal(searchData.users[0].username, 'John Smith');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should error for guest', (done) => {
|
it('should error for guest', async () => {
|
||||||
socketUser.search({ uid: 0 }, { query: 'john' }, (err) => {
|
try {
|
||||||
|
await apiUser.search({ uid: 0 }, { query: 'john' });
|
||||||
|
assert(false);
|
||||||
|
} catch (err) {
|
||||||
assert.equal(err.message, '[[error:no-privileges]]');
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
done();
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should error with invalid data', (done) => {
|
it('should error with invalid data', async () => {
|
||||||
socketUser.search({ uid: testUid }, null, (err) => {
|
try {
|
||||||
|
await apiUser.search({ uid: testUid }, null);
|
||||||
|
assert(false);
|
||||||
|
} catch (err) {
|
||||||
assert.equal(err.message, '[[error:invalid-data]]');
|
assert.equal(err.message, '[[error:invalid-data]]');
|
||||||
done();
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should error for unprivileged user', (done) => {
|
it('should error for unprivileged user', async () => {
|
||||||
socketUser.search({ uid: testUid }, { searchBy: 'ip', query: '123' }, (err) => {
|
try {
|
||||||
|
await apiUser.search({ uid: testUid }, { searchBy: 'ip', query: '123' });
|
||||||
|
assert(false);
|
||||||
|
} catch (err) {
|
||||||
assert.equal(err.message, '[[error:no-privileges]]');
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
done();
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should error for unprivileged user', (done) => {
|
it('should error for unprivileged user', async () => {
|
||||||
socketUser.search({ uid: testUid }, { filters: ['banned'], query: '123' }, (err) => {
|
try {
|
||||||
|
await apiUser.search({ uid: testUid }, { filters: ['banned'], query: '123' });
|
||||||
|
assert(false);
|
||||||
|
} catch (err) {
|
||||||
assert.equal(err.message, '[[error:no-privileges]]');
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
done();
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should error for unprivileged user', (done) => {
|
it('should error for unprivileged user', async () => {
|
||||||
socketUser.search({ uid: testUid }, { filters: ['flagged'], query: '123' }, (err) => {
|
try {
|
||||||
|
await apiUser.search({ uid: testUid }, { filters: ['flagged'], query: '123' });
|
||||||
|
assert(false);
|
||||||
|
} catch (err) {
|
||||||
assert.equal(err.message, '[[error:no-privileges]]');
|
assert.equal(err.message, '[[error:no-privileges]]');
|
||||||
done();
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should search users by ip', async () => {
|
it('should search users by ip', async () => {
|
||||||
const uid = await User.create({ username: 'ipsearch' });
|
const uid = await User.create({ username: 'ipsearch' });
|
||||||
await db.sortedSetAdd('ip:1.1.1.1:uid', [1, 1], [testUid, uid]);
|
await db.sortedSetAdd('ip:1.1.1.1:uid', [1, 1], [testUid, uid]);
|
||||||
const data = await socketUser.search({ uid: adminUid }, { query: '1.1.1.1', searchBy: 'ip' });
|
const data = await apiUser.search({ uid: adminUid }, { query: '1.1.1.1', searchBy: 'ip' });
|
||||||
assert(Array.isArray(data.users));
|
assert(Array.isArray(data.users));
|
||||||
assert.equal(data.users.length, 2);
|
assert.equal(data.users.length, 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should search users by uid', (done) => {
|
it('should search users by uid', async () => {
|
||||||
socketUser.search({ uid: testUid }, { query: uid, searchBy: 'uid' }, (err, data) => {
|
const data = await apiUser.search({ uid: testUid }, { query: uid, searchBy: 'uid' });
|
||||||
assert.ifError(err);
|
assert(Array.isArray(data.users));
|
||||||
assert(Array.isArray(data.users));
|
assert.equal(data.users[0].uid, uid);
|
||||||
assert.equal(data.users[0].uid, uid);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should search users by fullname', async () => {
|
it('should search users by fullname', async () => {
|
||||||
const uid = await User.create({ username: 'fullnamesearch1', fullname: 'Mr. Fullname' });
|
const uid = await User.create({ username: 'fullnamesearch1', fullname: 'Mr. Fullname' });
|
||||||
const data = await socketUser.search({ uid: adminUid }, { query: 'mr', searchBy: 'fullname' });
|
const data = await apiUser.search({ uid: adminUid }, { query: 'mr', searchBy: 'fullname' });
|
||||||
assert(Array.isArray(data.users));
|
assert(Array.isArray(data.users));
|
||||||
assert.equal(data.users.length, 1);
|
assert.equal(data.users.length, 1);
|
||||||
assert.equal(uid, data.users[0].uid);
|
assert.equal(uid, data.users[0].uid);
|
||||||
@@ -430,38 +434,26 @@ describe('User', () => {
|
|||||||
|
|
||||||
it('should search users by fullname', async () => {
|
it('should search users by fullname', async () => {
|
||||||
const uid = await User.create({ username: 'fullnamesearch2', fullname: 'Baris:Usakli' });
|
const uid = await User.create({ username: 'fullnamesearch2', fullname: 'Baris:Usakli' });
|
||||||
const data = await socketUser.search({ uid: adminUid }, { query: 'baris:', searchBy: 'fullname' });
|
const data = await apiUser.search({ uid: adminUid }, { query: 'baris:', searchBy: 'fullname' });
|
||||||
assert(Array.isArray(data.users));
|
assert(Array.isArray(data.users));
|
||||||
assert.equal(data.users.length, 1);
|
assert.equal(data.users.length, 1);
|
||||||
assert.equal(uid, data.users[0].uid);
|
assert.equal(uid, data.users[0].uid);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return empty array if query is empty', (done) => {
|
it('should return empty array if query is empty', async () => {
|
||||||
socketUser.search({ uid: testUid }, { query: '' }, (err, data) => {
|
const data = await apiUser.search({ uid: testUid }, { query: '' });
|
||||||
assert.ifError(err);
|
assert.equal(data.users.length, 0);
|
||||||
assert.equal(data.users.length, 0);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should filter users', (done) => {
|
it('should filter users', async () => {
|
||||||
User.create({ username: 'ipsearch_filter' }, (err, uid) => {
|
const uid = await User.create({ username: 'ipsearch_filter' });
|
||||||
assert.ifError(err);
|
await User.bans.ban(uid, 0, '');
|
||||||
User.bans.ban(uid, 0, '', (err) => {
|
await User.setUserFields(uid, { flags: 10 });
|
||||||
assert.ifError(err);
|
const data = await apiUser.search({ uid: adminUid }, {
|
||||||
User.setUserFields(uid, { flags: 10 }, (err) => {
|
query: 'ipsearch',
|
||||||
assert.ifError(err);
|
filters: ['online', 'banned', 'flagged'],
|
||||||
socketUser.search({ uid: adminUid }, {
|
|
||||||
query: 'ipsearch',
|
|
||||||
filters: ['online', 'banned', 'flagged'],
|
|
||||||
}, (err, data) => {
|
|
||||||
assert.ifError(err);
|
|
||||||
assert.equal(data.users[0].username, 'ipsearch_filter');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
assert.equal(data.users[0].username, 'ipsearch_filter');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should sort results by username', (done) => {
|
it('should sort results by username', (done) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user