in frontend/src/hooks/UsePermissions.js [29:54]
export function useEditTeamAllowed(team) {
const userDetails = useSelector((state) => state.auth.get('userDetails'));
const organisations = useSelector((state) => state.auth.get('organisations'));
const pmTeams = useSelector((state) => state.auth.get('pmTeams'));
const [isAllowed, setIsAllowed] = useState(false);
useEffect(() => {
// admin users can edit any team
if (userDetails.role === 'ADMIN') setIsAllowed(true);
// managers of the organisation related to the team can edit it
if (organisations && organisations.includes(team.organisation_id)) setIsAllowed(true);
// team managers can edit it
// verify from the redux store
if (pmTeams && pmTeams.includes(team.teamId)) setIsAllowed(true);
// and verify based on the team members list
if (team.members) {
const managers = team.members
.filter((member) => member.active && member.function === 'MANAGER')
.map((member) => member.username);
if (userDetails.username && managers.includes(userDetails.username)) {
setIsAllowed(true);
}
}
}, [pmTeams, userDetails.role, userDetails.username, organisations, team]);
return [isAllowed];
}