АРХ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: managedBy split Operational Core

This commit is contained in:
DCCONSTRUCTIONS
2026-05-09 12:49:09 +03:00
parent ca9fd34e91
commit 11c8c6fb1b
11 changed files with 227 additions and 16 deletions
@@ -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} />