Files
speckle-server/packages/frontend-2/components/header/WorkspaceSwitcher/header/SsoExpired.vue
T

53 lines
1.6 KiB
Vue

<template>
<HeaderWorkspaceSwitcherHeader
:name="workspace?.name"
:logo="workspace?.logo"
:to="workspaceRoute(activeWorkspaceSlug || '')"
>
<p class="text-body-2xs text-foreground-2 truncate">Requires SSO authentication</p>
<template #actions>
<MenuItem>
<FormButton color="outline" full-width size="sm" @click="handleSsoLogin">
Sign in with SSO
</FormButton>
</MenuItem>
</template>
</HeaderWorkspaceSwitcherHeader>
</template>
<script setup lang="ts">
import { MenuItem } from '@headlessui/vue'
import { graphql } from '~/lib/common/generated/gql'
import type { HeaderWorkspaceSwitcherHeaderExpiredSso_LimitedWorkspaceFragment } from '~/lib/common/generated/gql/graphql'
import type { MaybeNullOrUndefined } from '@speckle/shared'
import { workspaceRoute } from '~/lib/common/helpers/route'
import { useNavigation } from '~~/lib/navigation/composables/navigation'
import { useAuthManager, useLoginOrRegisterUtils } from '~/lib/auth/composables/auth'
graphql(`
fragment HeaderWorkspaceSwitcherHeaderExpiredSso_LimitedWorkspace on LimitedWorkspace {
id
slug
name
logo
}
`)
defineProps<{
workspace: MaybeNullOrUndefined<HeaderWorkspaceSwitcherHeaderExpiredSso_LimitedWorkspaceFragment>
}>()
const { activeWorkspaceSlug } = useNavigation()
const { signInOrSignUpWithSso } = useAuthManager()
const { challenge } = useLoginOrRegisterUtils()
const handleSsoLogin = () => {
if (!activeWorkspaceSlug.value) return
signInOrSignUpWithSso({
workspaceSlug: activeWorkspaceSlug.value,
challenge: challenge.value
})
}
</script>