Skip to content

Commit c55479f

Browse files
Merge branch 'feat/logs-archive-details' of https://github.com/gauravsinhaweb/website-backend into feat/logs-archive-details
2 parents 5a20050 + 4aca64c commit c55479f

26 files changed

+344
-58
lines changed

constants/errorMessages.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ module.exports = {
66
DATA_ADDED_SUCCESSFULLY: "User Device Info added successfully!",
77
USER_DATA_ALREADY_PRESENT: "The authentication document has already been created",
88
BAD_REQUEST: "BAD_REQUEST",
9+
INVALID_QUERY_PARAM: "Invalid Query Parameters Passed",
910
FILE_TOO_LARGE: (size) => `File too large, max accepted size is ${size} MB`,
1011
};

controllers/auth.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,27 @@ const updateAuthStatus = async (req, res) => {
119119
}
120120
};
121121

122+
const fetchUserDeviceInfo = async (req, res) => {
123+
try {
124+
const deviceId = req.query.device_id;
125+
const userDeviceInfoData = await QrCodeAuthModel.retrieveUserDeviceInfo(deviceId);
126+
if (!userDeviceInfoData.userExists) {
127+
return res.boom.notFound(`User with id ${deviceId} does not exist.`);
128+
}
129+
return res.json({
130+
message: "Authentication document retrieved successfully.",
131+
data: { ...userDeviceInfoData.data },
132+
});
133+
} catch (error) {
134+
logger.error(`Error while fetching user: ${error}`);
135+
return res.boom.badImplementation(SOMETHING_WENT_WRONG);
136+
}
137+
};
138+
122139
module.exports = {
123140
githubAuth,
124141
signout,
125142
storeUserDeviceInfo,
126143
updateAuthStatus,
144+
fetchUserDeviceInfo,
127145
};

controllers/badges.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const { ERROR_MESSAGES, SUCCESS_MESSAGES } = require("../constants/badges");
22
const { CONTROLLERS: CONTROLLERS_ERROR_MESSAGES } = ERROR_MESSAGES;
33
const { CONTROLLERS: CONTROLLERS_SUCCESS_MESSAGES } = SUCCESS_MESSAGES;
44
const badgeQuery = require("../models/badges");
5-
const { fetchUser } = require("../models/users");
5+
const dataAccess = require("../services/dataAccessLayer");
66
const imageService = require("../services/imageService");
77

88
/**
@@ -76,7 +76,7 @@ async function postBadge(req, res) {
7676
async function postUserBadges(req, res) {
7777
try {
7878
const { badgeIds, userId } = req.body;
79-
const { userExists } = await fetchUser({ userId });
79+
const { userExists } = await dataAccess.retrieveUsers({ id: userId });
8080
if (!userExists) {
8181
throw Error(ERROR_MESSAGES.MISC.USER_ID_DOES_NOT_EXIST);
8282
}

controllers/cloudflareCache.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
const logsQuery = require("../models/logs");
2-
const userQuery = require("../models/users");
32
const cloudflare = require("../services/cloudflareService");
43
const { logType } = require("../constants/logs");
54
const { MAX_CACHE_PURGE_COUNT } = require("../constants/cloudflareCache");
65
const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
6+
const dataAccess = require("../services/dataAccessLayer");
77

88
/**
99
* Purges the Cache of Members Profile Page
@@ -21,7 +21,7 @@ const purgeCache = async (req, res) => {
2121
if (req.body.user) {
2222
if (roles.super_user) {
2323
const { user } = req.body;
24-
const userDetails = await userQuery.fetchUser({ username: user });
24+
const userDetails = await dataAccess.retrieveUsers({ username: user });
2525
if (!userDetails.userExists) {
2626
return res.boom.badRequest();
2727
}

controllers/contributions.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const contributionsService = require("../services/contributions");
2-
const { fetchUser } = require("../models/users");
32
const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
4-
3+
const dataAccess = require("../services/dataAccessLayer");
54
/**
65
* Get the contributions of the user
76
* @param {Object} req - Express request object
@@ -10,8 +9,8 @@ const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
109

1110
const getUserContributions = async (req, res) => {
1211
try {
13-
const username = req.params.username;
14-
const result = await fetchUser({ username: req.params.username });
12+
const { username } = req.params;
13+
const result = await dataAccess.retrieveUsers({ username: req.params.username });
1514
if (result.userExists) {
1615
const contributions = await contributionsService.getUserContributions(username);
1716
return res.json(contributions);

controllers/external-accounts.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
const externalAccountsModel = require("../models/external-accounts");
22
const { SOMETHING_WENT_WRONG, INTERNAL_SERVER_ERROR } = require("../constants/errorMessages");
33
const { getDiscordMembers } = require("../services/discordService");
4-
const { getDiscordUsers, addOrUpdate } = require("../models/users");
4+
const { addOrUpdate } = require("../models/users");
5+
const { retrieveDiscordUsers } = require("../services/dataAccessLayer");
56
const logger = require("../utils/logger");
67

78
const addExternalAccountData = async (req, res) => {
@@ -51,9 +52,10 @@ const getExternalAccountData = async (req, res) => {
5152
*/
5253
const syncExternalAccountData = async (req, res) => {
5354
try {
54-
const [discordUserData, rdsUserData] = await Promise.all([getDiscordMembers(), getDiscordUsers()]);
55+
const [discordUserData, rdsUserData] = await Promise.all([getDiscordMembers(), retrieveDiscordUsers()]);
5556
const rdsUserDataMap = {};
5657
const updateUserDataPromises = [];
58+
const userUpdatedWithInDiscordFalse = [];
5759

5860
rdsUserData.forEach((rdsUser) => {
5961
rdsUserDataMap[rdsUser.discordId] = {
@@ -62,25 +64,36 @@ const syncExternalAccountData = async (req, res) => {
6264
};
6365
});
6466

65-
discordUserData.forEach((discordUser) => {
66-
const mappedRdsUser = rdsUserDataMap[discordUser.user.id];
67-
if (mappedRdsUser) {
68-
const userData = {
67+
for (const rdsUser of rdsUserData) {
68+
const discordUser = discordUserData.find((discordUser) => discordUser.user.id === rdsUser.discordId);
69+
70+
let userData = {};
71+
if (rdsUser.roles?.in_discord && !discordUser) {
72+
userData = {
73+
roles: {
74+
...rdsUser.roles,
75+
in_discord: false,
76+
},
77+
};
78+
userUpdatedWithInDiscordFalse.push(rdsUser);
79+
} else if (discordUser) {
80+
userData = {
6981
discordJoinedAt: discordUser.joined_at,
7082
roles: {
71-
...mappedRdsUser.roles,
83+
...rdsUser.roles,
7284
in_discord: true,
7385
},
7486
};
75-
updateUserDataPromises.push(addOrUpdate(userData, mappedRdsUser.id));
7687
}
77-
});
88+
updateUserDataPromises.push(addOrUpdate(userData, rdsUser.id));
89+
}
7890

7991
await Promise.all(updateUserDataPromises);
8092

8193
return res.json({
8294
rdsUsers: rdsUserData.length,
8395
discordUsers: discordUserData.length,
96+
userUpdatedWithInDiscordFalse: userUpdatedWithInDiscordFalse.length,
8497
message: "Data Sync Complete",
8598
});
8699
} catch (err) {

controllers/members.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
const ROLES = require("../constants/roles");
22
const members = require("../models/members");
33
const tasks = require("../models/tasks");
4-
const { fetchUser } = require("../models/users");
54
const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
6-
5+
const dataAccess = require("../services/dataAccessLayer");
76
/**
87
* Fetches the data about our members
98
*
@@ -13,8 +12,7 @@ const { SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
1312

1413
const getMembers = async (req, res) => {
1514
try {
16-
const allUsers = await members.fetchUsers(req.query);
17-
15+
const allUsers = await dataAccess.retrieveMembers(req.query);
1816
return res.json({
1917
message: allUsers.length ? "Members returned successfully!" : "No member found",
2018
members: allUsers,
@@ -34,7 +32,7 @@ const getMembers = async (req, res) => {
3432

3533
const getIdleMembers = async (req, res) => {
3634
try {
37-
const onlyMembers = await members.fetchUsersWithRole(ROLES.MEMBER);
35+
const onlyMembers = await dataAccess.retrieveUsersWithRole(ROLES.MEMBER);
3836
const taskParticipants = await tasks.fetchActiveTaskMembers();
3937
const idleMembers = onlyMembers?.filter(({ id }) => !taskParticipants.has(id));
4038
const idleMemberUserNames = idleMembers?.map((member) => member.username);
@@ -59,7 +57,7 @@ const getIdleMembers = async (req, res) => {
5957
const moveToMembers = async (req, res) => {
6058
try {
6159
const { username } = req.params;
62-
const result = await fetchUser({ username });
60+
const result = await dataAccess.retrieveUsers({ username });
6361
if (result.userExists) {
6462
const successObject = await members.moveToMembers(result.user.id);
6563
if (successObject.isAlreadyMember) {

controllers/tasks.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ const { OLD_ACTIVE, OLD_BLOCKED, OLD_PENDING } = TASK_STATUS_OLD;
77
const { IN_PROGRESS, BLOCKED, SMOKE_TESTING, ASSIGNED } = TASK_STATUS;
88
const { INTERNAL_SERVER_ERROR, SOMETHING_WENT_WRONG } = require("../constants/errorMessages");
99
const dependencyModel = require("../models/tasks");
10-
const userQuery = require("../models/users");
1110
const { transformQuery } = require("../utils/tasks");
1211
const { getPaginatedLink } = require("../utils/helper");
1312
const { updateUserStatusOnTaskUpdate, updateStatusOnTaskCompletion } = require("../models/userStatus");
14-
13+
const dataAccess = require("../services/dataAccessLayer");
1514
/**
1615
* Creates new task
1716
*
@@ -250,7 +249,7 @@ const updateTask = async (req, res) => {
250249
return res.boom.notFound("Task not found");
251250
}
252251
if (req.body?.assignee) {
253-
const user = await userQuery.fetchUser({ username: req.body.assignee });
252+
const user = await dataAccess.retrieveUsers({ username: req.body.assignee });
254253
if (!user.userExists) {
255254
return res.boom.notFound("User doesn't exist");
256255
}

controllers/userStatus.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const { Forbidden, NotFound } = require("http-errors");
2-
const { fetchUser } = require("../models/users");
3-
const userStatusModel = require("../models/userStatus");
42
const { getUserIdBasedOnRoute } = require("../utils/userStatus");
53
const { INTERNAL_SERVER_ERROR } = require("../constants/errorMessages");
4+
const dataAccess = require("../services/dataAccessLayer");
5+
const userStatusModel = require("../models/userStatus");
66
const { userState, CANCEL_OOO } = require("../constants/userStatus");
77

88
/**
@@ -76,7 +76,7 @@ const getAllUserStatus = async (req, res) => {
7676
const activeUsers = [];
7777
for (const status of allUserStatus) {
7878
// fetching users from users collection by userID in userStatus collection
79-
const result = await fetchUser({ userId: status.userId });
79+
const result = await dataAccess.retrieveUsers({ id: status.userId });
8080
if (!result.user?.roles?.archived) {
8181
status.full_name = `${result.user.first_name} ${result.user.last_name}`;
8282
status.picture = result.user.picture;

controllers/users.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ const getUser = async (req, res) => {
126126
try {
127127
const result = await dataAccess.retrieveUsers({ username: req.params.username });
128128
const user = result.user;
129-
130129
if (result.userExists) {
131130
return res.json({
132131
message: "User returned successfully!",
@@ -230,7 +229,7 @@ const updateSelf = async (req, res) => {
230229
try {
231230
const { id: userId } = req.userData;
232231
if (req.body.username) {
233-
const { user } = await userQuery.fetchUser({ userId });
232+
const { user } = await dataAccess.retrieveUsers({ id: userId });
234233
if (!user.incompleteUserDetails) {
235234
return res.boom.forbidden("Cannot update username again");
236235
}
@@ -379,7 +378,7 @@ const updateUser = async (req, res) => {
379378

380379
const { approval, timestamp, userId, ...profileDiff } = profileDiffData;
381380

382-
const user = await userQuery.fetchUser({ userId });
381+
const user = await dataAccess.retrieveUsers({ id: userId });
383382
if (!user.userExists) return res.boom.notFound("User doesn't exist");
384383

385384
await profileDiffsQuery.updateProfileDiff({ approval: profileDiffStatus.APPROVED }, profileDiffId);
@@ -568,7 +567,7 @@ const filterUsers = async (req, res) => {
568567
};
569568

570569
const nonVerifiedDiscordUsers = async (req, res) => {
571-
const data = await userQuery.getDiscordUsers();
570+
const data = await dataAccess.retrieveDiscordUsers();
572571
return res.json(data);
573572
};
574573

@@ -602,7 +601,7 @@ const removeTokens = async (req, res) => {
602601

603602
const updateRoles = async (req, res) => {
604603
try {
605-
const result = await userQuery.fetchUser({ userId: req.params.id });
604+
const result = await dataAccess.retrieveUsers({ id: req.params.id });
606605
if (result?.userExists) {
607606
const dataToUpdate = req.body;
608607
const response = await getRoleToUpdate(result.user, dataToUpdate);

0 commit comments

Comments
 (0)