fix: lower role user cannot update higher role user (#1048)

* fix: user role update

* chore: update project member update service type
This commit is contained in:
Aaryan Khandelwal 2023-05-15 23:58:41 +05:30 committed by GitHub
parent abe021071c
commit 8c707cc544
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 101 additions and 72 deletions

View file

@ -87,6 +87,8 @@ const MembersSettings: NextPage = () => {
})) || []),
];
const currentUser = projectMembers?.find((item) => item.member.id === user?.id);
return (
<>
<ConfirmProjectMemberRemove
@ -206,6 +208,14 @@ const MembersSettings: NextPage = () => {
onChange={(value: 5 | 10 | 15 | 20 | undefined) => {
if (!activeWorkspace || !projectDetails) return;
mutateMembers(
(prevData: any) =>
prevData.map((m: any) =>
m.id === member.id ? { ...m, role: value } : m
),
false
);
projectService
.updateProjectMember(
activeWorkspace.slug,
@ -215,32 +225,38 @@ const MembersSettings: NextPage = () => {
role: value,
}
)
.then((res) => {
.catch(() => {
setToastAlert({
type: "success",
message: "Member role updated successfully.",
title: "Success",
type: "error",
title: "Error!",
message:
"An error occurred while updating member role. Please try again.",
});
mutateMembers(
(prevData: any) =>
prevData.map((m: any) =>
m.id === member.id ? { ...m, ...res, role: value } : m
),
false
);
})
.catch((err) => {
console.log(err);
});
}}
position="right"
disabled={member.memberId === user?.id}
disabled={
member.memberId === user?.id ||
!member.member ||
(currentUser &&
currentUser.role !== 20 &&
currentUser.role < member.role)
}
>
{Object.keys(ROLE).map((key) => (
<CustomSelect.Option key={key} value={key}>
<>{ROLE[parseInt(key) as keyof typeof ROLE]}</>
</CustomSelect.Option>
))}
{Object.keys(ROLE).map((key) => {
if (
currentUser &&
currentUser.role !== 20 &&
currentUser.role < parseInt(key)
)
return null;
return (
<CustomSelect.Option key={key} value={key}>
<>{ROLE[parseInt(key) as keyof typeof ROLE]}</>
</CustomSelect.Option>
);
})}
</CustomSelect>
<CustomMenu ellipsis>
<CustomMenu.MenuItem