Skip to content

Commit 4d739ad

Browse files
committed
feat: Allow Direct Connect through the sign in screen
https://harperdb.atlassian.net/browse/STUDIO-583
1 parent 7a962fd commit 4d739ad

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

src/features/auth/ClusterInstanceSignIn.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { isLocalStudio } from '@/config/constants';
1212
import { calculateCreateClusterDeepLink } from '@/config/deepLinks';
1313
import { useInstanceClientIdParams } from '@/config/useInstanceClient';
1414
import { useClusterInstanceSignIn } from '@/features/auth/hooks/useClusterInstanceSignIn';
15+
import { authStore } from '@/features/auth/store/authStore';
1516
import { getClusterInfoQueryOptions } from '@/features/cluster/queries/getClusterInfoQuery';
1617
import { getInstanceHealthQueryOptions } from '@/features/instance/operations/queries/getInstanceHealth';
1718
import { UsernameSignInSchema } from '@/features/instance/operations/schemas/signInSchema';
@@ -30,6 +31,7 @@ export function ClusterInstanceSignIn() {
3031
const { data: cluster } = useQuery(
3132
getClusterInfoQueryOptions(clusterId, true),
3233
);
34+
3335
const instance: SchemaHdbInstance | undefined = useMemo(
3436
() => instanceId && cluster && cluster?.instances?.find(i => i.id === instanceId) || undefined,
3537
[cluster, instanceId]);
@@ -41,8 +43,10 @@ export function ClusterInstanceSignIn() {
4143
const operationsUrl = useMemo(() => {
4244
if (cluster) {
4345
if (instance) {
46+
authStore.flagForFabricConnect(instance.id, false);
4447
return getOperationsUrlForInstance(instance);
4548
} else {
49+
authStore.flagForFabricConnect(cluster.id, false);
4650
return getOperationsUrlForCluster(cluster);
4751
}
4852
}

src/features/cluster/InstanceLogInCell.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export function InstanceLogInCell({ instance }: { readonly instance: Instance })
1616
const operationsUrl = useMemo(() => getOperationsUrlForInstance(instance), [instance]);
1717
const instanceClient = useInstanceClient(operationsUrl);
1818
const { update } = useOrganizationClusterInstancePermissions();
19+
const isFabricConnect = authStore.checkForFabricConnect(instance.id);
1920

2021
const onSignOutClick = useCallback(async () => {
2122
await onInstanceLogoutSubmit({ instanceClient, entityId: instance.id });
@@ -26,7 +27,7 @@ export function InstanceLogInCell({ instance }: { readonly instance: Instance })
2627
return <LoaderCircleIcon className="animate-spin" color="gray" />;
2728
}
2829

29-
if (!instanceUser) {
30+
if (!instanceUser || isFabricConnect) {
3031
return <span className="flex gap-4">
3132
{update && <Link
3233
to={`../instance/${instance.id}${defaultInstanceRoute}`}

src/features/cluster/routes.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { defaultInstanceRouteUpOne } from '@/config/constants';
22
import { ClusterInstanceSignIn } from '@/features/auth/ClusterInstanceSignIn';
3+
import { authStore } from '@/features/auth/store/authStore';
34
import { createRoute, redirect } from '@tanstack/react-router';
45
import { clusterLayoutRoute } from './clusterLayoutRoute';
56
import { FinishSetup } from './FinishSetup';
@@ -30,7 +31,8 @@ const clusterSignInRoute = createRoute({
3031
path: 'sign-in',
3132
component: ClusterInstanceSignIn,
3233
beforeLoad: ({ context, location, params }) => {
33-
if (context.authentication[params.clusterId]?.user) {
34+
const isFabricConnect = authStore.checkForFabricConnect(params.clusterId);
35+
if (context.authentication[params.clusterId]?.user && !isFabricConnect) {
3436
const search: Record<string, string> = location?.search;
3537
throw redirect({
3638
to: search?.redirect?.startsWith('/')
@@ -46,7 +48,12 @@ const instanceSignInRoute = createRoute({
4648
path: 'instance/$instanceId/sign-in',
4749
component: ClusterInstanceSignIn,
4850
beforeLoad: ({ context, location, params }) => {
49-
if (context.authentication[params.instanceId || params.clusterId]?.user) {
51+
const isFabricConnect = authStore.checkForFabricConnect(params.clusterId)
52+
|| authStore.checkForFabricConnect(params.instanceId);
53+
if (isFabricConnect) {
54+
return;
55+
}
56+
if (context.authentication[params.instanceId]?.user) {
5057
const search: Record<string, string> = location?.search;
5158
throw redirect({
5259
to: search?.redirect?.startsWith('/')

src/features/clusters/components/ClusterCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export function ClusterCard({ cluster }: { cluster: Cluster; }) {
127127
);
128128

129129
const menuItems = [
130-
isActive && update && !auth.isLoading && !auth.user && (
130+
isActive && update && !auth.isLoading && (!isDirectConnect || isFabricConnect) && (
131131
<Link to={`${cluster.id}/sign-in`} disabled={signingOut}>
132132
<DropdownMenuItem>Direct Sign In</DropdownMenuItem>
133133
</Link>

0 commit comments

Comments
 (0)