Saltar al contenido
XID

@xid-kit/vue

Plugin de Vue 3, composables y componentes headless sobre @xid-kit/core.

Estado

XID no publica paquetes en ningún registro. Este SDK se distribuye como código fuente en el repositorio de XID; úsalo desde una copia local del repositorio.

El estado del paquete es Paquete actual. El plugin de Vue 3, los composables y los componentes headless están implementados. Una prueba de ida y vuelta real contra un IdP en infraestructura de producción está pendiente de verificación manual.

Configuración del plugin

Registra XidPlugin una sola vez en main.ts. Crea un singleton XidClient, lo proporciona mediante XID_INJECTION_KEY y llama a client.load() para hidratar el estado de sesión.

// main.ts
import { createApp } from 'vue'
import { XidPlugin } from '@xid-kit/vue'
import App from './App.vue'

const app = createApp(App)
// This setup requires Core routes on the Vue application's exact origin.
app.use(XidPlugin, { mode: 'same-origin' })
app.mount('#app')

Composables

import { useAuth, useUser, useOrganization, useSession } from '@xid-kit/vue'

const auth = useAuth()
// auth.isLoaded / auth.isSignedIn / auth.userId
// auth.getToken()  -> Promise<Result<string, XidError>>
// auth.signOut()   -> Promise<Result<null, XidError>>

const userRef = useUser()
// userRef.value.isLoaded && userRef.value.isSignedIn -> userRef.value.user.id

const orgRef = useOrganization()
// orgRef.value.organization / orgRef.value.membership / orgRef.value.setActive()

const sessionRef = useSession()
// sessionRef.value.session / sessionRef.value.getToken()

Componentes

<template>
  <SignInButton sign-in-url="/sign-in" redirect-url="/dashboard">Log in</SignInButton>
  <SignOutButton redirect-url="/">Log out</SignOutButton>

  <Protect role="admin">
    <AdminPanel />
    <template #fallback><p>Access denied.</p></template>
  </Protect>

  <Protect permission="org:member:read">
    <MemberList />
  </Protect>
</template>

<script setup lang="ts">
import { SignInButton, SignOutButton, Protect } from '@xid-kit/vue'
</script>

API exportada

Exportar Tipo Propósito
XidPlugin Plugin de Vue Punto de entrada app.use; registra XidClient y llama a client.load()
createXidClient function Fábrica que devuelve una instancia standalone de XidClient
useXidClient composable Devuelve el XidClient inyectado; lanza excepción si el plugin no está registrado
XID_INJECTION_KEY InjectionKey Símbolo usado para proveer e inyectar el singleton de XidClient
useXid composable Ref de estado completo más todas las acciones del cliente (UseXidReturn)
useAuth composable isLoaded, isSignedIn, userId, getToken, signOut
useUser composable Ref que envuelve una unión discriminada sobre isLoaded / isSignedIn / user
useOrganization composable Org activa, membresía y acción setActive
useSession composable Sesión activa y acción getToken
SignInButton componente Botón headless que redirige a la URL de inicio de sesión al hacer clic
SignOutButton componente Botón headless que llama a client.signOut() al hacer clic
Protect componente Barrera de rol y permiso basada en slots con slots por defecto y de reserva

Escribe para buscar

Usa las flechas para navegarPulsa Intro para seleccionarPulsa Escape para cerrar