Skip to content

Commit 52332f0

Browse files
committed
Add Set Final Day permission functionality
1 parent 69d05c5 commit 52332f0

File tree

4 files changed

+67
-65
lines changed

4 files changed

+67
-65
lines changed

src/components/Header/Header.jsx

Lines changed: 59 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ export function Header(props) {
9898
props.hasPermission('postUserProfile', !isAuthUser && canInteractWithViewingUser) ||
9999
props.hasPermission('deleteUserProfile', !isAuthUser && canInteractWithViewingUser) ||
100100
props.hasPermission('changeUserStatus', !isAuthUser && canInteractWithViewingUser) ||
101-
props.hasPermission('getUserProfiles', !isAuthUser && canInteractWithViewingUser);
101+
props.hasPermission('getUserProfiles', !isAuthUser && canInteractWithViewingUser) ||
102+
props.hasPermission('setFinalDay', !isAuthUser && canInteractWithViewingUser);
102103

103104
// Badges
104105
const canAccessBadgeManagement =
@@ -470,58 +471,55 @@ export function Header(props) {
470471
<NavItem className="responsive-spacing">
471472
<BellNotification userId={displayUserId} />
472473
</NavItem>
473-
{(canAccessUserManagement ||
474-
canAccessBadgeManagement ||
475-
canAccessProjects ||
476-
canAccessTeams ||
477-
canAccessPopups ||
478-
canAccessSendEmails ||
479-
canAccessPermissionsManagement) && (
480-
<UncontrolledDropdown nav inNavbar className="responsive-spacing">
481-
<DropdownToggle nav caret>
482-
<span className="dashboard-text-link">{OTHER_LINKS}</span>
483-
</DropdownToggle>
484-
<DropdownMenu className={darkMode ? 'bg-yinmn-blue' : ''}>
485-
{canAccessUserManagement && (
486-
<DropdownItem tag={Link} to="/usermanagement" className={fontColor}>
487-
{USER_MANAGEMENT}
488-
</DropdownItem>
489-
)}
490-
{canAccessBadgeManagement && (
491-
<DropdownItem tag={Link} to="/badgemanagement" className={fontColor}>
492-
{BADGE_MANAGEMENT}
493-
</DropdownItem>
494-
)}
495-
{canAccessProjects && (
496-
<DropdownItem tag={Link} to="/projects" className={fontColor}>
497-
{PROJECTS}
498-
</DropdownItem>
499-
)}
500-
{canAccessTeams && (
501-
<DropdownItem tag={Link} to="/teams" className={fontColor}>
502-
{TEAMS}
503-
</DropdownItem>
504-
)}
505-
{canAccessSendEmails && (
506-
<DropdownItem tag={Link} to="/announcements" className={fontColor}>
507-
{SEND_EMAILS}
508-
</DropdownItem>
509-
)}
510-
{canAccessPermissionsManagement && (
511-
<>
512-
<DropdownItem divider />
513-
<DropdownItem
514-
tag={Link}
515-
to="/permissionsmanagement"
516-
className={fontColor}
517-
>
518-
{PERMISSIONS_MANAGEMENT}
519-
</DropdownItem>
520-
</>
521-
)}
522-
</DropdownMenu>
523-
</UncontrolledDropdown>
524-
)}
474+
475+
{(canAccessUserManagement ||
476+
canAccessBadgeManagement ||
477+
canAccessProjects ||
478+
canAccessTeams ||
479+
canAccessPopups ||
480+
canAccessSendEmails ||
481+
canAccessPermissionsManagement) && (
482+
<UncontrolledDropdown nav inNavbar className="responsive-spacing">
483+
<DropdownToggle nav caret>
484+
<span className="dashboard-text-link">{OTHER_LINKS}</span>
485+
</DropdownToggle>
486+
<DropdownMenu className={darkMode ? 'bg-yinmn-blue' : ''}>
487+
{canAccessUserManagement && (
488+
<DropdownItem tag={Link} to="/usermanagement" className={fontColor}>
489+
{USER_MANAGEMENT}
490+
</DropdownItem>
491+
)}
492+
{canAccessBadgeManagement && (
493+
<DropdownItem tag={Link} to="/badgemanagement" className={fontColor}>
494+
{BADGE_MANAGEMENT}
495+
</DropdownItem>
496+
)}
497+
{canAccessProjects && (
498+
<DropdownItem tag={Link} to="/projects" className={fontColor}>
499+
{PROJECTS}
500+
</DropdownItem>
501+
)}
502+
{canAccessTeams && (
503+
<DropdownItem tag={Link} to="/teams" className={fontColor}>
504+
{TEAMS}
505+
</DropdownItem>
506+
)}
507+
{canAccessSendEmails && (
508+
<DropdownItem tag={Link} to="/announcements" className={fontColor}>
509+
{SEND_EMAILS}
510+
</DropdownItem>
511+
)}
512+
{canAccessPermissionsManagement && (
513+
<>
514+
<DropdownItem divider />
515+
<DropdownItem tag={Link} to="/permissionsmanagement" className={fontColor}>
516+
{PERMISSIONS_MANAGEMENT}
517+
</DropdownItem>
518+
</>
519+
)}
520+
</DropdownMenu>
521+
</UncontrolledDropdown>
522+
)}
525523
<NavItem className="responsive-spacing">
526524
<NavLink tag={Link} to={`/userprofile/${displayUserId}`}>
527525
<div
@@ -561,14 +559,14 @@ export function Header(props) {
561559
props.userProfile.email,
562560
props.userProfile.email,
563561
) && (
564-
<DropdownItem
565-
tag={Link}
566-
to={`/updatepassword/${displayUserId}`}
567-
className={fontColor}
568-
>
569-
{UPDATE_PASSWORD}
570-
</DropdownItem>
571-
)}
562+
<DropdownItem
563+
tag={Link}
564+
to={`/updatepassword/${displayUserId}`}
565+
className={fontColor}
566+
>
567+
{UPDATE_PASSWORD}
568+
</DropdownItem>
569+
)}
572570
<DropdownItem className={fontColor}>
573571
<DarkModeButton />
574572
</DropdownItem>

src/components/PermissionsManagement/PermissionsConst.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// recursive function that returns the permission keys given an array of permission objects (from permissionLabels below)
1+
//// recursive function that returns the permission keys given an array of permission objects (from permissionLabels below)
22
const getAllSubpermissionKeys = permissions => {
33
const keys = [];
44
permissions.forEach(permission => {

src/components/UserManagement/UserTableData.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ const UserTableDataComponent = (props) => {
6767
const resetPasswordStatus = props.hasPermission('resetPassword');
6868
const updatePasswordStatus = props.hasPermission('updatePassword');
6969
const canChangeUserStatus = props.hasPermission('changeUserStatus');
70+
const canSetFinalDay = props.hasPermission('setFinalDay');
7071
const canSeeReports = props.hasPermission('getReports');
7172
const toggleDeleteTooltip = () => setTooltipDelete(!tooltipDeleteOpen);
7273
const togglePauseTooltip = () => setTooltipPause(!tooltipPauseOpen);
@@ -474,7 +475,7 @@ const UserTableDataComponent = (props) => {
474475
<td>
475476
{!isCurrentUser && (
476477
<>
477-
{!canChangeUserStatus ? (
478+
{!canSetFinalDay ? (
478479
<Tooltip
479480
placement="bottom"
480481
isOpen={tooltipFinalDayOpen}
@@ -486,13 +487,15 @@ const UserTableDataComponent = (props) => {
486487
) : (
487488
''
488489
)}
489-
<SetUpFinalDayButton
490+
<SetUpFinalDayButton
490491
userProfile={props.user}
491492
darkMode={darkMode}
492493
onFinalDaySave={updatedUser => {
493494
// Update the user object in the parent state
494495
props.onUserUpdate(updatedUser);
495496
}}
497+
id={`btn-final-day-${props.user._id}`}
498+
disabled={!canSetFinalDay}
496499
/>
497500
</>
498501
)}

src/components/UserProfile/BasicInformationTab/BasicInformationTab.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import moment from 'moment';
55
import PhoneInput from 'react-phone-input-2';
66
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
77
import { faCopy } from '@fortawesome/free-solid-svg-icons';
8-
// import 'react-phone-input-2/lib/style.css';
8+
9+
//// import 'react-phone-input-2/lib/style.css';
910
import PauseAndResumeButton from '~/components/UserManagement/PauseAndResumeButton';
1011
import TimeZoneDropDown from '../TimeZoneDropDown';
1112
import { connect } from 'react-redux';

0 commit comments

Comments
 (0)