disable domain protection switch if not on pro
This commit is contained in:
@@ -414,7 +414,7 @@ type Documents = {
|
||||
"\n fragment SettingsWorkspacesProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": typeof types.SettingsWorkspacesProjects_ProjectCollectionFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_Workspace on Workspace {\n id\n role\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n hasAccessToMultiRegion: hasAccessToFeature(\n featureName: workspaceDataRegionSpecificity\n )\n hasProjects: projects(limit: 0) {\n totalCount\n }\n }\n": typeof types.SettingsWorkspacesRegions_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_ServerInfo on ServerInfo {\n multiRegion {\n regions {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n }\n }\n": typeof types.SettingsWorkspacesRegions_ServerInfoFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n": typeof types.SettingsWorkspacesSecurity_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n plan {\n name\n status\n }\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n": typeof types.SettingsWorkspacesSecurity_WorkspaceFragmentDoc,
|
||||
};
|
||||
const documents: Documents = {
|
||||
"\n fragment AuthLoginWithEmailBlock_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n email\n user {\n id\n }\n }\n": types.AuthLoginWithEmailBlock_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
@@ -817,7 +817,7 @@ const documents: Documents = {
|
||||
"\n fragment SettingsWorkspacesProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": types.SettingsWorkspacesProjects_ProjectCollectionFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_Workspace on Workspace {\n id\n role\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n hasAccessToMultiRegion: hasAccessToFeature(\n featureName: workspaceDataRegionSpecificity\n )\n hasProjects: projects(limit: 0) {\n totalCount\n }\n }\n": types.SettingsWorkspacesRegions_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_ServerInfo on ServerInfo {\n multiRegion {\n regions {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n }\n }\n": types.SettingsWorkspacesRegions_ServerInfoFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n": types.SettingsWorkspacesSecurity_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n plan {\n name\n status\n }\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n": types.SettingsWorkspacesSecurity_WorkspaceFragmentDoc,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2437,7 +2437,7 @@ export function graphql(source: "\n fragment SettingsWorkspacesRegions_ServerIn
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n"];
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n plan {\n name\n status\n }\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n plan {\n name\n status\n }\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n"];
|
||||
|
||||
export function graphql(source: string) {
|
||||
return (documents as any)[source] ?? {};
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -75,18 +75,30 @@
|
||||
<div class="flex flex-col space-y-8">
|
||||
<div class="flex items-center">
|
||||
<div class="flex-1 flex-col pr-6 gap-y-1">
|
||||
<p class="text-body-xs font-medium text-foreground">Domain protection</p>
|
||||
<div class="flex items-center">
|
||||
<p class="text-body-xs font-medium text-foreground">
|
||||
Domain protection
|
||||
</p>
|
||||
</div>
|
||||
<p class="text-body-2xs text-foreground-2 leading-5 max-w-md">
|
||||
Only users with email addresses from your verified domains can be added
|
||||
as workspace members or administrators.
|
||||
</p>
|
||||
</div>
|
||||
<FormSwitch
|
||||
v-model="isDomainProtectionEnabled"
|
||||
:show-label="false"
|
||||
:disabled="!hasWorkspaceDomains"
|
||||
name="domain-protection"
|
||||
/>
|
||||
<div
|
||||
v-tippy="
|
||||
isBusinessPlan
|
||||
? 'Your workspace must have at least one verified domain'
|
||||
: 'Business plan required'
|
||||
"
|
||||
>
|
||||
<FormSwitch
|
||||
v-model="isDomainProtectionEnabled"
|
||||
:show-label="false"
|
||||
:disabled="!hasWorkspaceDomains || !isBusinessPlan"
|
||||
name="domain-protection"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="flex-1 flex-col pr-6 gap-y-1">
|
||||
@@ -126,7 +138,7 @@ import type { SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomainFragme
|
||||
import { settingsWorkspacesSecurityQuery } from '~/lib/settings/graphql/queries'
|
||||
import { useAddWorkspaceDomain } from '~/lib/settings/composables/management'
|
||||
import { useMixpanel } from '~/lib/core/composables/mp'
|
||||
import { blockedDomains } from '@speckle/shared'
|
||||
import { blockedDomains, WorkspacePlans } from '@speckle/shared'
|
||||
import { useIsWorkspacesSsoEnabled } from '~/composables/globals'
|
||||
import {
|
||||
workspaceUpdateDomainProtectionMutation,
|
||||
@@ -138,6 +150,10 @@ graphql(`
|
||||
fragment SettingsWorkspacesSecurity_Workspace on Workspace {
|
||||
id
|
||||
slug
|
||||
plan {
|
||||
name
|
||||
status
|
||||
}
|
||||
domains {
|
||||
id
|
||||
domain
|
||||
@@ -187,6 +203,12 @@ const workspace = computed(() => result.value?.workspaceBySlug)
|
||||
const workspaceDomains = computed(() => {
|
||||
return workspace.value?.domains || []
|
||||
})
|
||||
const isBusinessPlan = computed(
|
||||
() =>
|
||||
workspace.value?.plan?.name === WorkspacePlans.Business &&
|
||||
workspace.value?.plan?.status === 'valid'
|
||||
)
|
||||
|
||||
const hasWorkspaceDomains = computed(() => workspaceDomains.value.length > 0)
|
||||
const verifiedUserDomains = computed(() => {
|
||||
const workspaceDomainSet = new Set(workspaceDomains.value.map((item) => item.domain))
|
||||
|
||||
Reference in New Issue
Block a user