UNPKG

nuxt-supabase-team-auth

Version:

Drop-in Nuxt 3 module for team-based authentication with Supabase

49 lines (41 loc) 1.46 kB
import { computed } from 'vue' import type { PasswordPolicy } from '../types/password-policy' import { validatePassword, generatePasswordHelpText, createPasswordSchema } from '../utils/password-validation' import { useRuntimeConfig } from '#imports' /** * Composable to access and use the password policy configuration */ export function usePasswordPolicy() { const config = useRuntimeConfig() // Get the password policy from runtime config const passwordPolicy = computed<PasswordPolicy>(() => { return config.public?.teamAuth?.passwordPolicy || {} }) // Get generated help text const passwordHelpText = computed(() => { return generatePasswordHelpText(passwordPolicy.value) }) // Validate a password const validate = (password: string) => { return validatePassword(password, passwordPolicy.value) } // Get Valibot schema for forms const getPasswordSchema = async () => { return await createPasswordSchema(passwordPolicy.value) } // Create a custom validator for confirm password fields const createConfirmPasswordValidator = async (getPasswordValue: () => string) => { const v = await import('valibot') return v.pipe( v.string(), v.custom((value: string) => value === getPasswordValue(), 'Passwords do not match'), ) } return { passwordPolicy: passwordPolicy.value, passwordHelpText, validate, getPasswordSchema, createConfirmPasswordValidator, } }