АРХ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: managedBy split Operational Core
This commit is contained in:
+27
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
import { observer } from "mobx-react";
|
||||
import useSWR from "swr";
|
||||
// plane imports
|
||||
import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
@@ -20,10 +21,14 @@ import { useProject } from "@/hooks/store/use-project";
|
||||
import { useUserPermissions } from "@/hooks/store/user";
|
||||
// plane web imports
|
||||
import { ProjectTeamspaceList } from "@/plane-web/components/projects/teamspaces/teamspace-list";
|
||||
// services
|
||||
import { WorkspaceService } from "@/services/workspace.service";
|
||||
// local imports
|
||||
import type { Route } from "./+types/page";
|
||||
import { MembersProjectSettingsHeader } from "./header";
|
||||
|
||||
const workspaceService = new WorkspaceService();
|
||||
|
||||
function MembersSettingsPage({ params }: Route.ComponentProps) {
|
||||
// router
|
||||
const { workspaceSlug, projectId } = params;
|
||||
@@ -32,6 +37,9 @@ function MembersSettingsPage({ params }: Route.ComponentProps) {
|
||||
// store hooks
|
||||
const { currentProjectDetails } = useProject();
|
||||
const { workspaceUserInfo, allowPermissions } = useUserPermissions();
|
||||
const { data: nodedcWorkspacePolicy } = useSWR(`NODEDC_WORKSPACE_POLICY_${workspaceSlug}`, () =>
|
||||
workspaceService.getNodeDCWorkspacePolicy(workspaceSlug)
|
||||
);
|
||||
// derived values
|
||||
const pageTitle = currentProjectDetails?.name ? `${currentProjectDetails?.name} - Members` : undefined;
|
||||
const isProjectMemberOrAdmin = allowPermissions(
|
||||
@@ -45,6 +53,25 @@ function MembersSettingsPage({ params }: Route.ComponentProps) {
|
||||
return <NotAuthorizedView section="settings" isProjectView className="h-auto" />;
|
||||
}
|
||||
|
||||
if (nodedcWorkspacePolicy?.managed_by === "launcher") {
|
||||
return (
|
||||
<SettingsContentWrapper header={<MembersProjectSettingsHeader />} hugging>
|
||||
<PageHead title={pageTitle} />
|
||||
<SettingsHeading title={t("common.members")} />
|
||||
<section className="rounded-2xl border border-custom-border-200 bg-custom-background-90 p-8">
|
||||
<p className="text-sm font-semibold uppercase tracking-[0.22em] text-custom-text-300">NODE.DC managed project</p>
|
||||
<div className="mt-3 max-w-2xl space-y-3">
|
||||
<h4 className="text-h3-medium">Участники проекта управляются в Launcher.</h4>
|
||||
<p className="text-body-sm-regular text-custom-text-300">
|
||||
Этот workspace подключен к enterprise-контуру NODE.DC. Project-level доступы назначаются в Launcher, поэтому
|
||||
локальное управление участниками проекта в Task Manager заблокировано.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</SettingsContentWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<SettingsContentWrapper header={<MembersProjectSettingsHeader />} hugging>
|
||||
<PageHead title={pageTitle} />
|
||||
|
||||
@@ -60,6 +60,9 @@ const CreateWorkspacePage = observer(function CreateWorkspacePage() {
|
||||
enabled: false,
|
||||
can_create_workspace: true,
|
||||
mode: "unavailable",
|
||||
managed_by: "tasker",
|
||||
default_managed_by: "tasker",
|
||||
workspaces: [],
|
||||
reason: "NODE.DC workspace policy is unavailable.",
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user