diff --git a/packages/web/app/src/components/organization/members/list.tsx b/packages/web/app/src/components/organization/members/list.tsx index 6d160ee33..c9b58fc7b 100644 --- a/packages/web/app/src/components/organization/members/list.tsx +++ b/packages/web/app/src/components/organization/members/list.tsx @@ -3,6 +3,7 @@ import { MoreHorizontalIcon, MoveDownIcon, MoveUpIcon, SettingsIcon } from 'luci import type { IconType } from 'react-icons'; import { FaGithub, FaGoogle, FaOpenid, FaUserLock } from 'react-icons/fa'; import { useMutation } from 'urql'; +import { PermissionsSpace, usePermissionsManager } from '@/components/organization/Permissions'; import { AlertDialog, AlertDialogAction, @@ -14,6 +15,13 @@ import { AlertDialogTitle, } from '@/components/ui/alert-dialog'; import { Button } from '@/components/ui/button'; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from '@/components/ui/dialog'; import { DropdownMenu, DropdownMenuContent, @@ -21,11 +29,17 @@ import { DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { SubPageLayout, SubPageLayoutHeader } from '@/components/ui/page-content-layout'; +import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { useToast } from '@/components/ui/use-toast'; -import { ChangePermissionsModal } from '@/components/v2/modals'; import { FragmentType, graphql, useFragment } from '@/gql'; -import { AuthProvider } from '@/gql/graphql'; +import { + AuthProvider, + OrganizationAccessScope, + ProjectAccessScope, + TargetAccessScope, +} from '@/gql/graphql'; +import { scopes } from '@/lib/access/common'; import { useToggle } from '@/lib/hooks'; import { RoleSelector } from './common'; import { MemberInvitationButton } from './invitations'; @@ -267,8 +281,8 @@ function OrganizationMemberRoleSwitcher(props: { ) : null} @@ -587,3 +601,118 @@ export function OrganizationMembers(props: { ); } + +const ChangePermissionsModal_OrganizationFragment = graphql(` + fragment ChangePermissionsModal_OrganizationFragment on Organization { + ...UsePermissionManager_OrganizationFragment + } +`); + +export const ChangePermissionsModal_MemberFragment = graphql(` + fragment ChangePermissionsModal_MemberFragment on Member { + id + ...UsePermissionManager_MemberFragment + } +`); + +export function ChangePermissionsModal(props: { + isOpen: boolean; + toggleModalOpen: () => void; + organizationFragment: FragmentType; + memberFragment: FragmentType; +}) { + const organization = useFragment( + ChangePermissionsModal_OrganizationFragment, + props.organizationFragment, + ); + const member = useFragment(ChangePermissionsModal_MemberFragment, props.memberFragment); + const manager = usePermissionsManager({ + onSuccess: props.toggleModalOpen, + organization, + member, + passMemberScopes: true, + }); + + const initialScopes = { + organization: [...manager.organizationScopes], + project: [...manager.projectScopes], + target: [...manager.targetScopes], + }; + + return ( + manager.submit} + /> + ); +} + +export function ChangePermissionsModalContent(props: { + isOpen: boolean; + toggleModalOpen: () => void; + manager: ReturnType; + initialScopes: { + organization: OrganizationAccessScope[]; + project: ProjectAccessScope[]; + target: TargetAccessScope[]; + }; + onSubmit: () => void; +}) { + return ( + + +
+ + Permissions (legacy) + + + + Organization + Projects + Targets + + + + + + + + + +
+
+
+ ); +} diff --git a/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx b/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx index 505a7ab61..8cecc51d1 100644 --- a/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx +++ b/packages/web/app/src/components/target/settings/cdn-access-tokens.tsx @@ -104,7 +104,14 @@ function CreateCDNAccessTokenModal(props: {
- diff --git a/packages/web/app/src/components/target/settings/registry-access-token.tsx b/packages/web/app/src/components/target/settings/registry-access-token.tsx index 3c2a06f36..a1504a823 100644 --- a/packages/web/app/src/components/target/settings/registry-access-token.tsx +++ b/packages/web/app/src/components/target/settings/registry-access-token.tsx @@ -302,7 +302,14 @@ export function GenerateTokenContent(props: {
- - - - - - ); -} diff --git a/packages/web/app/src/components/v2/modals/index.ts b/packages/web/app/src/components/v2/modals/index.ts index 6327c5d31..a1c4daba9 100644 --- a/packages/web/app/src/components/v2/modals/index.ts +++ b/packages/web/app/src/components/v2/modals/index.ts @@ -1,3 +1,2 @@ -export { ChangePermissionsModal } from './change-permissions'; export { ConnectSchemaModal } from './connect-schema'; export { TransferOrganizationOwnershipModal } from './transfer-organization-ownership'; diff --git a/packages/web/app/src/pages/organization-settings.tsx b/packages/web/app/src/pages/organization-settings.tsx index 8bdf0373d..08a77cd54 100644 --- a/packages/web/app/src/pages/organization-settings.tsx +++ b/packages/web/app/src/pages/organization-settings.tsx @@ -692,7 +692,13 @@ export function DeleteOrganizationModalContent(props: { - + {openModal && ( + console.log('Submit')} + key="change-permissions-modal" + /> + )} + + ); + }, +};