chore: updated user permission for project and workspace settings (#1807)

* fix: updated user permission for project and workspace settings

* chore: workspace delete modal fix
This commit is contained in:
Anmol Singh Bhatia 2023-08-11 18:29:24 +05:30 committed by GitHub
parent 7becec4ee9
commit ac6d2b0139
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 71 additions and 45 deletions

View File

@ -50,8 +50,10 @@ export const DeleteWorkspaceModal: React.FC<Props> = ({ isOpen, data, onClose, u
const canDelete = confirmWorkspaceName === data?.name && confirmDeleteMyWorkspace;
const handleClose = () => {
onClose();
setIsDeleteLoading(false);
setConfirmWorkspaceName("");
setConfirmDeleteMyWorkspace(false);
onClose();
};
const handleDeletion = async () => {

View File

@ -34,7 +34,7 @@ import { truncateText } from "helpers/string.helper";
import { IProject, IWorkspace } from "types";
import type { NextPage } from "next";
// fetch-keys
import { PROJECTS_LIST, PROJECT_DETAILS } from "constants/fetch-keys";
import { PROJECTS_LIST, PROJECT_DETAILS, USER_PROJECT_VIEW } from "constants/fetch-keys";
// constants
import { NETWORK_CHOICES } from "constants/project";
@ -62,6 +62,13 @@ const GeneralSettings: NextPage = () => {
: null
);
const { data: memberDetails, error } = useSWR(
workspaceSlug && projectId ? USER_PROJECT_VIEW(projectId.toString()) : null,
workspaceSlug && projectId
? () => projectService.projectMemberMe(workspaceSlug.toString(), projectId.toString())
: null
);
const {
register,
handleSubmit,
@ -157,6 +164,8 @@ const GeneralSettings: NextPage = () => {
const currentNetwork = NETWORK_CHOICES.find((n) => n.key === projectDetails?.network);
const isAdmin = memberDetails?.role === 20;
return (
<ProjectAuthorizationWrapper
breadcrumbs={
@ -355,7 +364,7 @@ const GeneralSettings: NextPage = () => {
</div>
<div className="sm:text-right">
{projectDetails ? (
<SecondaryButton type="submit" loading={isSubmitting}>
<SecondaryButton type="submit" loading={isSubmitting} disabled={!isAdmin}>
{isSubmitting ? "Updating Project..." : "Update Project"}
</SecondaryButton>
) : (
@ -364,13 +373,14 @@ const GeneralSettings: NextPage = () => {
</Loader>
)}
</div>
{memberDetails?.role === 20 && (
<div className="grid grid-cols-12 gap-4 sm:gap-16">
<div className="col-span-12 sm:col-span-6">
<h4 className="text-lg font-semibold">Danger Zone</h4>
<p className="text-sm text-custom-text-200">
The danger zone of the project delete page is a critical area that requires careful
consideration and attention. When deleting a project, all of the data and resources
within that project will be permanently removed and cannot be recovered.
The danger zone of the project delete page is a critical area that requires
careful consideration and attention. When deleting a project, all of the data and
resources within that project will be permanently removed and cannot be recovered.
</p>
</div>
<div className="col-span-12 sm:col-span-6">
@ -390,6 +400,7 @@ const GeneralSettings: NextPage = () => {
)}
</div>
</div>
)}
</div>
</form>
</ProjectAuthorizationWrapper>

View File

@ -28,7 +28,7 @@ import { copyTextToClipboard, truncateText } from "helpers/string.helper";
import type { IWorkspace } from "types";
import type { NextPage } from "next";
// fetch-keys
import { WORKSPACE_DETAILS, USER_WORKSPACES } from "constants/fetch-keys";
import { WORKSPACE_DETAILS, USER_WORKSPACES, WORKSPACE_MEMBERS_ME } from "constants/fetch-keys";
// constants
import { ORGANIZATION_SIZE } from "constants/workspace";
@ -50,6 +50,11 @@ const WorkspaceSettings: NextPage = () => {
const { user } = useUserAuth();
const { data: memberDetails } = useSWR(
workspaceSlug ? WORKSPACE_MEMBERS_ME(workspaceSlug.toString()) : null,
workspaceSlug ? () => workspaceService.workspaceMemberMe(workspaceSlug.toString()) : null
);
const { setToastAlert } = useToast();
const { data: activeWorkspace } = useSWR(
@ -142,6 +147,8 @@ const WorkspaceSettings: NextPage = () => {
});
};
const isAdmin = memberDetails?.role === 20;
return (
<WorkspaceAuthorizationLayout
breadcrumbs={
@ -314,10 +321,15 @@ const WorkspaceSettings: NextPage = () => {
</div>
</div>
<div className="sm:text-right">
<SecondaryButton onClick={handleSubmit(onSubmit)} loading={isSubmitting}>
<SecondaryButton
onClick={handleSubmit(onSubmit)}
loading={isSubmitting}
disabled={!isAdmin}
>
{isSubmitting ? "Updating..." : "Update Workspace"}
</SecondaryButton>
</div>
{memberDetails?.role === 20 && (
<div className="grid grid-cols-12 gap-4 sm:gap-16">
<div className="col-span-12 sm:col-span-6">
<h4 className="text-lg font-semibold">Danger Zone</h4>
@ -334,6 +346,7 @@ const WorkspaceSettings: NextPage = () => {
</DangerButton>
</div>
</div>
)}
</div>
) : (
<div className="grid h-full w-full place-items-center px-4 sm:px-0">