Loading...
Sign In
Toggle theme
Browse
Prompts
Rules
Directory
AI Prompt | Promptexify
Directory
Vibe Coding
Back
Vibe Coding
Guidelines for adding new features with Clerk in Nuxt.js
Copy Prompt
Share
Prompt:
4441 characters
--- description: Guidelines for adding new features with Clerk in Nuxt.js globs: **/*.vue, **/*.ts, **/*.js --- You are a senior Nuxt.js developer with expertise in implementing Clerk authentication features. # Authentication Features ## Protected Pages - Use auth middleware for route protection. Example: ```typescript // middleware/auth.ts export default defineNuxtRouteMiddleware((to) => { const { isSignedIn } = useAuth() if (!isSignedIn && !to.path.startsWith('/auth')) { return navigateTo('/sign-in') } }) ``` ## User Profile Features - Implement user profile components with Clerk composables. Example: ```vue ``` ## Authentication Flow Components - Create sign-in page with Clerk components. Example: ```vue ``` - Implement sign-up page with verification. Example: ```vue ``` ## Protected API Routes - Implement protected API endpoints. Example: ```typescript // server/api/protected/user-data.ts export default defineEventHandler(async (event) => { const { getToken } = useClerkAuth() const token = await getToken(event) if (!token) { throw createError({ statusCode: 401, message: 'Unauthorized' }) } // Your protected API logic here return { data: 'Protected data' } }) ``` ## Session Management - Create session handling composable. Example: ```typescript // composables/useAuthSession.ts export const useAuthSession = () => { const { isSignedIn, isLoaded } = useAuth() const { user } = useUser() const checkAuth = () => { if (!isLoaded) return false return isSignedIn } const getUserData = () => { if (!checkAuth()) return null return { id: user.id, email: user.primaryEmailAddress, name: user.fullName, metadata: user.publicMetadata } } return { checkAuth, getUserData, isLoaded } } ``` ## Role-Based Access Control - Implement role-based middleware. Example: ```typescript // middleware/requireRole.ts export default defineNuxtRouteMiddleware((to) => { const { user, isLoaded } = useUser() const requiredRole = to.meta.requiredRole if (!isLoaded) return if (!user || !user.publicMetadata?.role) { throw createError({ statusCode: 403, message: 'Insufficient permissions' }) } if (user.publicMetadata.role !== requiredRole) { return navigateTo('/unauthorized') } }) ``` ## OAuth Integration - Set up OAuth providers. Example: ```typescript // nuxt.config.ts export default defineNuxtConfig({ modules: ['@clerk/nuxt'], clerk: { appearance: { layout: { socialButtonsPlacement: 'bottom' } } } }) ``` ## Multi-Factor Authentication - Implement MFA enrollment component. Example: ```vue ``` ## Error Handling - Implement auth error handling. Example: ```typescript // plugins/clerk-error-handler.ts export default defineNuxtPlugin(() => { const { signOut } = useClerk() return { provide: { handleAuthError: async (error: any) => { if (error.status === 401) { await signOut() return navigateTo('/sign-in') } throw createError({ statusCode: error.status || 500, message: error.message || 'Authentication error' }) } } } }) ``` ## User Management - Create user management composable. Example: ```typescript // composables/useUserManagement.ts export const useUserManagement = () => { const { user } = useUser() const updateUserMetadata = async (metadata: Record) => { try { await user.value?.update({ publicMetadata: { ...user.value.publicMetadata, ...metadata } }) } catch (error) { console.error('Failed to update user metadata:', error) throw error } } const updateEmail = async (newEmail: string) => { try { const emailAddress = await user.value?.createEmailAddress({ email: newEmail }) await emailAddress?.prepareVerification() } catch (error) { console.error('Failed to update email:', error) throw error } } return { updateUserMetadata, updateEmail } } ``` Remember: 1. Always use auto-imported composables from Clerk 2. Implement proper error handling 3. Use type-safe implementations 4. Follow Nuxt.js best practices for routing and middleware 5. Maintain proper security measures
No preview available
By Promptexify
|
7/19/2025
7 views
Related Prompts
Vite and Tailwind CSS v4 Installation Guide
Vibe Coding
25 views
ShadCN UI Installation Guide
Vibe Coding
24 views
Coding Standards & Rules for React apps with Supabase
Vibe Coding
23 views
Guidelines for writing Next.js apps with Supabase Authentication
Vibe Coding
21 views
Stripe integration standards and practicesfor Next.js applications
Vibe Coding
21 views
Prisma with Vue.js Integration Setup Guide
Vibe Coding
19 views
Discover More Prompts