Skip to content
21 changes: 0 additions & 21 deletions constants/userDataLevels.js

This file was deleted.

3 changes: 3 additions & 0 deletions constants/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ const profileStatus = {
NOT_APPROVED: "NOT APPROVED",
};

const USER_SENSITIVE_DATA = ["phone", "email", "chaincode", "tokens"];

const USER_STATUS = {
OOO: "ooo",
IDLE: "idle",
Expand Down Expand Up @@ -47,4 +49,5 @@ module.exports = {
USERS_PATCH_HANDLER_ACTIONS,
USERS_PATCH_HANDLER_ERROR_MESSAGES,
USERS_PATCH_HANDLER_SUCCESS_MESSAGES,
USER_SENSITIVE_DATA,
};
19 changes: 1 addition & 18 deletions controllers/discordactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ const admin = require("firebase-admin");
const config = require("config");
const jwt = require("jsonwebtoken");
const discordRolesModel = require("../models/discordactions");
const { retrieveUsers } = require("../services/dataAccessLayer");

/**
* Creates a role
Expand Down Expand Up @@ -67,25 +66,9 @@ const createGroupRole = async (req, res) => {
const getAllGroupRoles = async (req, res) => {
try {
const { groups } = await discordRolesModel.getAllGroupRoles();
const groupsWithMemberCount = await discordRolesModel.getNumberOfMemberForGroups(groups);
const groupCreatorIds = groupsWithMemberCount.reduce((ids, group) => {
ids.add(group.createdBy);
return ids;
}, new Set());
const groupCreatorsDetails = await retrieveUsers({ userIds: Array.from(groupCreatorIds) });
const groupsWithUserDetails = groupsWithMemberCount.map((group) => {
const groupCreator = groupCreatorsDetails[group.createdBy];
return {
...group,
firstName: groupCreator.first_name,
lastName: groupCreator.last_name,
image: groupCreator.picture?.url,
};
});

return res.json({
message: "Roles fetched successfully!",
groups: groupsWithUserDetails,
groups,
});
} catch (err) {
logger.error(`Error while getting roles: ${err}`);
Expand Down
74 changes: 3 additions & 71 deletions controllers/events.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
/* eslint-disable camelcase */
const { GET_ALL_EVENTS_LIMIT_MIN, UNWANTED_PROPERTIES_FROM_100MS } = require("../constants/events");
const { INTERNAL_SERVER_ERROR } = require("../constants/errorMessages");

const { EventTokenService, EventAPIService } = require("../services");
const { removeUnwantedProperties } = require("../utils/events");
const eventQuery = require("../models/events");

const logger = require("../utils/logger");
const { removeUnwantedProperties } = require("../utils/events");

const tokenService = new EventTokenService();
const apiService = new EventAPIService(tokenService);
Expand Down Expand Up @@ -102,7 +100,7 @@ const joinEvent = async (req, res) => {
});
} catch (error) {
logger.error({ error });
return res.boom.badImplementation(INTERNAL_SERVER_ERROR);
return res.status(500).send("Internal Server Error");
}
};

Expand Down Expand Up @@ -195,77 +193,11 @@ const endActiveEvent = async (req, res) => {
}
};

/**
* Adds a peer to an event.
*
* @async
* @function
* @param {Object} req - The Express request object.
* @param {Object} res - The Express response object.
* @returns {Promise<Object>} The JSON response with the added peer data and a success message.
* @throws {Object} The JSON response with an error message if an error occurred while adding the peer.
*/
const addPeerToEvent = async (req, res) => {
try {
const data = await eventQuery.addPeerToEvent({
peerId: req.body.peerId,
name: req.body.name,
role: req.body.role,
joinedAt: req.body.joinedAt,
eventId: req.params.id,
});
return res.status(200).json({
data,
message: `Selected Participant is added to the event.`,
});
} catch (error) {
logger.error({ error });
return res.status(500).json({
error: error.code,
message: "You can't add selected Participant. Please ask Admin or Host for help.",
});
}
};

/**
* Kicks out a peer from an event.
*
* @async
* @function
* @param {Object} req - The Express request object.
* @param {Object} res - The Express response object.
* @returns {Promise<Object>} The JSON response with a success message if the peer is successfully kicked out.
* @throws {Object} The JSON response with an error message if an error occurred while kicking out the peer.
*/
const kickoutPeer = async (req, res) => {
const { id } = req.params;
const payload = {
peer_id: req.body.peerId,
reason: req.body.reason,
};

try {
await apiService.post(`/active-rooms/${id}/remove-peers`, payload);
await eventQuery.kickoutPeer({ eventId: id, peerId: payload.peer_id, reason: req.body.reason });
return res.status(200).json({
message: `Selected Participant is removed from event.`,
});
} catch (error) {
logger.error({ error });
return res.status(500).json({
error: error.code,
message: "You can't remove selected Participant from Remove, Please ask Admin or Host for help.",
});
}
};

module.exports = {
createEvent,
getAllEvents,
joinEvent,
getEventById,
updateEvent,
endActiveEvent,
addPeerToEvent,
kickoutPeer,
};
4 changes: 2 additions & 2 deletions controllers/members.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const ROLES = require("../constants/roles");
const members = require("../models/members");
const tasks = require("../models/tasks");
const { SOMETHING_WENT_WRONG, INTERNAL_SERVER_ERROR } = require("../constants/errorMessages");
const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
const dataAccess = require("../services/dataAccessLayer");
const { addLog } = require("../models/logs");
/**
Expand Down Expand Up @@ -110,7 +110,7 @@ const archiveMembers = async (req, res) => {
return res.boom.notFound("User doesn't exist");
} catch (err) {
logger.error(`Error while retriving contributions ${err}`);
return res.boom.badImplementation(INTERNAL_SERVER_ERROR);
return res.boom.badImplementation(SOMETHING_WENT_WRONG);
}
};

Expand Down
11 changes: 5 additions & 6 deletions controllers/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,9 @@ const getUsers = async (req, res) => {
}

const data = await dataAccess.retrieveUsers({ query: req.query });

return res.json({
message: "Users returned successfully!",
users: data.users,
users: data.allUsers,
links: {
next: data.nextId ? getPaginationLink(req.query, "next", data.nextId) : "",
prev: data.prevId ? getPaginationLink(req.query, "prev", data.prevId) : "",
Expand Down Expand Up @@ -211,9 +210,10 @@ const getUsernameAvailabilty = async (req, res) => {
const getSelfDetails = async (req, res) => {
try {
if (req.userData) {
const user = await dataAccess.retrieveUsers({
userdata: req.userData,
});
if (req.query.private) {
return res.send(req.userData);
}
const user = await dataAccess.retrieveUsers({ userdata: req.userData });
return res.send(user);
}
return res.boom.notFound("User doesn't exist");
Expand Down Expand Up @@ -412,7 +412,6 @@ const updateUser = async (req, res) => {
const generateChaincode = async (req, res) => {
try {
const { id } = req.userData;

const chaincode = await chaincodeQuery.storeChaincode(id);
await userQuery.addOrUpdate({ chaincode }, id);
return res.json({
Expand Down
7 changes: 4 additions & 3 deletions middlewares/authenticate.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const authService = require("../services/authService");
const dataAccess = require("../services/dataAccessLayer");
const users = require("../models/users");

/**
* Middleware to check if the user has been restricted. If user is restricted,
Expand Down Expand Up @@ -54,7 +54,7 @@ module.exports = async (req, res, next) => {
const { userId } = authService.verifyAuthToken(token);

// add user data to `req.userData` for further use
const userData = await dataAccess.retrieveUsers({ id: userId });
const userData = await users.fetchUser({ userId });
req.userData = userData.user;

return checkRestricted(req, res, next);
Expand All @@ -79,7 +79,8 @@ module.exports = async (req, res, next) => {
});

// add user data to `req.userData` for further use
req.userData = await dataAccess.retrieveUsers({ id: userId });
req.userData = await users.fetchUser({ userId });

return checkRestricted(req, res, next);
} else {
return res.boom.unauthorized("Unauthenticated User");
Expand Down
46 changes: 0 additions & 46 deletions middlewares/validators/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,57 +100,11 @@ const endActiveEvent = async (req, res, next) => {
}
};

const addPeerToEvent = async (req, res, next) => {
const { id } = req.params;
const { peerId, name, role, joinedAt } = req.body;

const schema = joi.object({
peerId: joi.string().required(),
name: joi.string().required(),
id: joi.string().required(),
role: joi.string().required(),
joinedAt: joi.date().required(),
});

const validationOptions = { abortEarly: false };

try {
await schema.validateAsync({ peerId, name, id, role, joinedAt }, validationOptions);
next();
} catch (error) {
logger.error(`Error while adding a peer to the event: ${error}`);
res.boom.badRequest(error.details[0].message);
}
};

const kickoutPeer = async (req, res, next) => {
const { id } = req.params;
const { peerId, reason } = req.body;

const schema = joi.object({
id: joi.string().required(),
peerId: joi.string().required(),
reason: joi.string().required(),
});

const validationOptions = { abortEarly: false };

try {
await schema.validateAsync({ id, peerId, reason }, validationOptions);
next();
} catch (error) {
logger.error(`We encountered some error while removing selected Participant from event: ${error}`);
res.boom.badRequest(error.details[0].message);
}
};

module.exports = {
createEvent,
getAllEvents,
joinEvent,
getEventById,
updateEvent,
endActiveEvent,
addPeerToEvent,
kickoutPeer,
};
31 changes: 0 additions & 31 deletions models/discordactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,41 +114,10 @@ const updateDiscordImageForVerification = async (userDiscordId) => {
}
};

const getNumberOfMemberForGroups = async (groups = []) => {
try {
if (!groups.length) {
return [];
}
const roleIds = groups.map((group) => group.roleid);

const snapshots = await memberRoleModel.where("roleid", "in", roleIds).get();
const roleCount = {};

snapshots.forEach((doc) => {
const roleToMemberMapping = doc.data();

if (roleCount[roleToMemberMapping.roleid]) {
roleCount[roleToMemberMapping.roleid] += 1;
} else {
roleCount[roleToMemberMapping.roleid] = 1;
}
});

return groups.map((group) => ({
...group,
memberCount: roleCount[group.roleid] || 0,
}));
} catch (err) {
logger.error("Error while counting members for each group", err);
throw err;
}
};

module.exports = {
createNewRole,
getAllGroupRoles,
addGroupRoleToMember,
isGroupRoleExists,
updateDiscordImageForVerification,
getNumberOfMemberForGroups,
};
Loading