Staff member cannot chnge its own settings (#2968)

This commit is contained in:
Patryk Andrzejewski 2023-01-17 09:51:18 +01:00 committed by GitHub
parent b723e05b2f
commit 53806abc10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 9 deletions

View file

@ -221,11 +221,7 @@ const Routes: React.FC = () => {
path="/product-types" path="/product-types"
component={ProductTypesSection} component={ProductTypesSection}
/> />
<SectionRoute <SectionRoute path="/staff" component={StaffSection} />
permissions={[PermissionEnum.MANAGE_STAFF]}
path="/staff"
component={StaffSection}
/>
<SectionRoute <SectionRoute
permissions={[PermissionEnum.MANAGE_STAFF]} permissions={[PermissionEnum.MANAGE_STAFF]}
path="/permission-groups" path="/permission-groups"

View file

@ -60,7 +60,7 @@ const StaffPasswordResetDialog: React.FC<StaffPasswordResetDialogProps> = ({
/> />
</DialogTitle> </DialogTitle>
<Form initial={initialForm} onSubmit={onSubmit}> <Form initial={initialForm} onSubmit={onSubmit}>
{({ change, data, submit }) => ( {({ change, data }) => (
<> <>
<DialogContent> <DialogContent>
<TextField <TextField
@ -114,7 +114,6 @@ const StaffPasswordResetDialog: React.FC<StaffPasswordResetDialogProps> = ({
disabled={data.newPassword.length < 8} disabled={data.newPassword.length < 8}
transitionState={confirmButtonState} transitionState={confirmButtonState}
type="submit" type="submit"
onClick={submit}
> >
<FormattedMessage {...buttonMessages.save} /> <FormattedMessage {...buttonMessages.save} />
</ConfirmButton> </ConfirmButton>

View file

@ -1,9 +1,11 @@
import { useUser } from "@dashboard/auth"; import { useUser } from "@dashboard/auth";
import ActionDialog from "@dashboard/components/ActionDialog"; import ActionDialog from "@dashboard/components/ActionDialog";
import NotFoundPage from "@dashboard/components/NotFoundPage"; import NotFoundPage from "@dashboard/components/NotFoundPage";
import { hasPermissions } from "@dashboard/components/RequirePermissions";
import { WindowTitle } from "@dashboard/components/WindowTitle"; import { WindowTitle } from "@dashboard/components/WindowTitle";
import { DEFAULT_INITIAL_SEARCH_DATA } from "@dashboard/config"; import { DEFAULT_INITIAL_SEARCH_DATA } from "@dashboard/config";
import { import {
PermissionEnum,
useChangeStaffPasswordMutation, useChangeStaffPasswordMutation,
useStaffAvatarDeleteMutation, useStaffAvatarDeleteMutation,
useStaffAvatarUpdateMutation, useStaffAvatarUpdateMutation,
@ -64,6 +66,9 @@ export const StaffDetails: React.FC<OrderListProps> = ({ id, params }) => {
}); });
const staffMember = isUserSameAsViewer ? user.user : data?.user; const staffMember = isUserSameAsViewer ? user.user : data?.user;
const hasManageStaffPermission = hasPermissions(user.user.userPermissions, [
PermissionEnum.MANAGE_STAFF,
]);
const [changePassword, changePasswordOpts] = useChangeStaffPasswordMutation({ const [changePassword, changePasswordOpts] = useChangeStaffPasswordMutation({
onCompleted: data => { onCompleted: data => {
@ -83,6 +88,7 @@ export const StaffDetails: React.FC<OrderListProps> = ({ id, params }) => {
result: searchPermissionGroupsOpts, result: searchPermissionGroupsOpts,
} = usePermissionGroupSearch({ } = usePermissionGroupSearch({
variables: DEFAULT_INITIAL_SEARCH_DATA, variables: DEFAULT_INITIAL_SEARCH_DATA,
skip: !hasManageStaffPermission,
}); });
const [ const [
@ -156,7 +162,9 @@ export const StaffDetails: React.FC<OrderListProps> = ({ id, params }) => {
firstName: formData.firstName, firstName: formData.firstName,
isActive: formData.isActive, isActive: formData.isActive,
lastName: formData.lastName, lastName: formData.lastName,
...groupsDiff(data?.user, formData), ...(hasManageStaffPermission
? groupsDiff(data?.user, formData)
: {}),
}, },
}, },
}), }),
@ -208,7 +216,8 @@ export const StaffDetails: React.FC<OrderListProps> = ({ id, params }) => {
staffMember={staffMember} staffMember={staffMember}
saveButtonBarState={updateStaffMemberOpts.status} saveButtonBarState={updateStaffMemberOpts.status}
fetchMorePermissionGroups={{ fetchMorePermissionGroups={{
hasMore: searchPermissionGroupsOpts.data?.search.pageInfo.hasNextPage, hasMore:
searchPermissionGroupsOpts.data?.search?.pageInfo.hasNextPage,
loading: searchPermissionGroupsOpts.loading, loading: searchPermissionGroupsOpts.loading,
onFetchMore: loadMorePermissionGroups, onFetchMore: loadMorePermissionGroups,
}} }}