-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yashwanth individual permission change show #2868
base: development
Are you sure you want to change the base?
Changes from 2 commits
ce7ecd8
3379eb7
9940a72
10869e5
3df8692
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -64,6 +64,16 @@ function UserPermissionsPopUp({ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, [actualUserProfile]); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const logPermissionChanges = async (logPermissionChangesUrl, permissionChangeLog) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
try { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await axios.post(logPermissionChangesUrl, permissionChangeLog); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} catch (error) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
toast.error('Error logging permissions:', { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
autoClose: 10000, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const updateProfileOnSubmit = async e => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
e.preventDefault(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const shouldPreventEdit = cantUpdateDevAdminDetails(actualUserProfile?.email, authUser.email); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -80,9 +90,40 @@ function UserPermissionsPopUp({ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const userId = actualUserProfile?._id; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const url = ENDPOINTS.USER_PROFILE(userId); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const logPermissionChangesUrl = ENDPOINTS.POST_USER_PERMISSION_CHANGE_LOGS; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const allUserInfo = await axios.get(url).then(res => res.data); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const newUserInfo = { ...allUserInfo, permissions: { frontPermissions: userPermissions } }; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
let existingPermissions = allUserInfo.permissions?.frontPermissions || []; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const existingPermissionsSet = new Set(existingPermissions || []); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const newPermissionsSet = new Set(userPermissions || []); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const addedPermissions = (userPermissions || []).filter( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permission => !existingPermissionsSet.has(permission), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const removedPermissions = (existingPermissions || []).filter( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permission => !newPermissionsSet.has(permission), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
existingPermissions = [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
...existingPermissions.filter(permission => !removedPermissions.includes(permission)), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
...addedPermissions, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const permissionChangeLog = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
actualUserProfile: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
firstName: actualUserProfile.firstName, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lastName: actualUserProfile.lastName, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
authUser: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
email: authUser.email, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
role: authUser.role, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
userId, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
existingPermissions, // Existing permissions before change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addedPermissions, // New permissions added | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removedPermissions, // Permissions removed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This logic should be on the backend and part of the same API call as the update itself. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
await axios | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.put(url, newUserInfo) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.then(() => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -94,6 +135,7 @@ function UserPermissionsPopUp({ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
autoClose: 10000, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setToastShown(true); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logPermissionChanges(logPermissionChangesUrl, permissionChangeLog); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This is not atomic. This request could fail after the permission change request succeeds, so it wouldn't show up in the history. If a dev wanted to test updating permissions manually with something like Postman, they could avoid also logging those changes which could cause confusion or potential problems. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
toggle(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||
---|---|---|---|---|
|
@@ -5,6 +5,8 @@ const APIEndpoint = | |||
export const ENDPOINTS = { | ||||
APIEndpoint: () => APIEndpoint, | ||||
USER_PROFILE: userId => `${APIEndpoint}/userprofile/${userId}`, | ||||
POST_USER_PERMISSION_CHANGE_LOGS: `${APIEndpoint}/logPermissionChanges`, | ||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||
GET_USER_PERMISSION_CHANGE_LOGS: userId => `${APIEndpoint}/logPermissionChanges/${userId}`, | ||||
USER_PROFILE_PROPERTY: userId => `${APIEndpoint}/userprofile/${userId}/property`, | ||||
USER_PROFILES: `${APIEndpoint}/userprofile/`, | ||||
UPDATE_REHIREABLE_STATUS: userId => `${APIEndpoint}/userprofile/${userId}/rehireable`, | ||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removing reverse? Nvm I see the sort on the backend now.