return account name and sp name in getUsers (#87)

This commit is contained in:
Dave Horton
2022-12-19 15:05:35 -05:00
committed by GitHub
parent 86953b9524
commit 317a094b3e
2 changed files with 53 additions and 8 deletions

View File

@@ -1,13 +1,45 @@
const Model = require('./model'); const Model = require('./model');
const {promisePool} = require('../db'); const {promisePool} = require('../db');
const sqlAccount = 'SELECT * FROM users WHERE account_sid = ?'; const sqlAll = `
const sqlSP = 'SELECT * FROM users WHERE service_provider_sid = ?'; SELECT u.user_sid, u.name, u.email, u.account_sid, u.service_provider_sid, u.is_active,
u.force_change, u.phone, u.pending_email, u.provider, u.provider_userid,
u.email_activation_code, u.email_validated,
sp.name as service_provider_name, acc.name as account_name
FROM users u
LEFT JOIN service_providers as sp ON u.service_provider_sid = sp.service_provider_sid
LEFT JOIN accounts acc ON u.account_sid = acc.account_sid
`;
const sqlAccount = `
SELECT u.user_sid, u.name, u.email, u.account_sid, u.service_provider_sid, u.is_active,
u.force_change, u.phone, u.pending_email, u.provider, u.provider_userid,
u.email_activation_code, u.email_validated,
sp.name as service_provider_name, acc.name as account_name
FROM users u
LEFT JOIN service_providers as sp ON u.service_provider_sid = sp.service_provider_sid
LEFT JOIN accounts acc ON u.account_sid = acc.account_sid
WHERE u.account_sid = ?
`;
const sqlSP = `
SELECT u.user_sid, u.name, u.email, u.account_sid, u.service_provider_sid, u.is_active,
u.force_change, u.phone, u.pending_email, u.provider, u.provider_userid,
u.email_activation_code, u.email_validated,
sp.name as service_provider_name, acc.name as account_name
FROM users u
LEFT JOIN service_providers as sp ON u.service_provider_sid = sp.service_provider_sid
LEFT JOIN accounts acc ON u.account_sid = acc.account_sid
WHERE u.service_provider_sid = ?
`;
class User extends Model { class User extends Model {
constructor() { constructor() {
super(); super();
} }
static async retrieveAll() {
const [rows] = await promisePool.query(sqlAll);
return rows;
}
static async retrieveAllForAccount(account_sid) { static async retrieveAllForAccount(account_sid) {
const [rows] = await promisePool.query(sqlAccount, [account_sid]); const [rows] = await promisePool.query(sqlAccount, [account_sid]);
return rows; return rows;

View File

@@ -72,10 +72,10 @@ router.get('/', async(req, res) => {
results = await User.retrieveAll(); results = await User.retrieveAll();
} }
else if (decodedJwt.scope === 'account') { else if (decodedJwt.scope === 'account') {
results = await User.retrieveAllForAccount(decodedJwt.account_sid); results = await User.retrieveAllForAccount(decodedJwt.account_sid, true);
} }
else if (decodedJwt.scope === 'service_provider') { else if (decodedJwt.scope === 'service_provider') {
results = await User.retrieveAllForServiceProvider(decodedJwt.service_provider_sid); results = await User.retrieveAllForServiceProvider(decodedJwt.service_provider_sid, true);
} }
else { else {
throw new DbErrorBadRequest(`invalid scope: ${decodedJwt.scope}`); throw new DbErrorBadRequest(`invalid scope: ${decodedJwt.scope}`);
@@ -84,7 +84,17 @@ router.get('/', async(req, res) => {
if (results.length === 0) throw new Error('failure retrieving users list'); if (results.length === 0) throw new Error('failure retrieving users list');
usersList = results.map((user) => { usersList = results.map((user) => {
const {user_sid, name, email, force_change, is_active, account_sid, service_provider_sid} = user; const {
user_sid,
name,
email,
force_change,
is_active,
account_sid,
service_provider_sid,
account_name,
service_provider_name
} = user;
let scope; let scope;
if (account_sid && service_provider_sid) { if (account_sid && service_provider_sid) {
scope = 'account'; scope = 'account';
@@ -94,16 +104,19 @@ router.get('/', async(req, res) => {
scope = 'admin'; scope = 'admin';
} }
return { const obj = {
user_sid, user_sid,
name, name,
email, email,
scope, scope,
force_change, force_change,
is_active, is_active,
account_sid, ...(account_sid && {account_sid}),
service_provider_sid ...(account_name && {account_name}),
...(service_provider_sid && {service_provider_sid}),
...(service_provider_name && {service_provider_name})
}; };
return obj;
}); });
} catch (err) { } catch (err) {
sysError(logger, res, err); sysError(logger, res, err);