Appearance
Authentication Schemes
Overview
Authentication schemes in Nuxt.js define how the application authenticates users with the backend API. The Admin Frontend uses custom authentication schemes built on top of @nuxtjs/auth-next to handle different authentication flows including regular user authentication and external user authentication.
Scheme Location
All authentication schemes are located in the schemes/ directory and are registered in nuxt.config.js under the auth module configuration.
Available Schemes
Custom Scheme
- File:
schemes/customScheme.js - Purpose: Main authentication scheme for regular workspace users
- Features: Email/password login, token management, workspace handling
External Scheme
- File:
schemes/external.js - Purpose: Authentication scheme for external/guest users
- Features: OTP-based authentication, limited access, workspace restrictions
Scheme Structure
Authentication schemes follow the Nuxt.js auth-next scheme pattern:
javascript
export default class CustomScheme {
constructor(auth, options) {
// Initialize scheme
}
mounted() {
// Called when auth module is mounted
}
login(endpoint, data) {
// Handle login
}
logout(endpoint) {
// Handle logout
}
fetchUser(endpoint) {
// Fetch user data
}
reset() {
// Reset authentication state
}
}Scheme Configuration
Schemes are configured in nuxt.config.js:
javascript
auth: {
strategies: {
custom: {
scheme: '~/schemes/customScheme',
endpoints: {
login: { url: '/login', method: 'post' },
logout: { url: '/logout', method: 'post' },
user: { url: '/user', method: 'get' }
}
},
external: {
scheme: '~/schemes/external',
endpoints: {
login: { url: '/external/login', method: 'post' },
logout: { url: '/external/logout', method: 'post' },
user: { url: '/external/user', method: 'get' }
}
}
}
}Scheme Features
Token Management
- Token storage (cookies/localStorage)
- Token refresh
- Token expiration handling
- Automatic token injection
User Management
- User data fetching
- User state management
- Workspace context
- Permission handling
Session Management
- Session creation
- Session validation
- Session expiration
- Cross-tab synchronization
Usage
In Components
javascript
// Login
await this.$auth.loginWith('custom', {
data: {
email: '[email protected]',
password: 'password'
}
})
// Logout
await this.$auth.logout()
// Check authentication
if (this.$auth.loggedIn) {
// User is authenticated
}
// Get user
const user = this.$auth.userIn Middleware
javascript
export default function ({ $auth, redirect }) {
if (!$auth.loggedIn) {
return redirect('/login')
}
}Integration Points
- Login Pages: Scheme login methods
- Middleware: Authentication checks
- API Calls: Token injection
- Store: User state management
Notes for Development
- Schemes extend auth-next base scheme
- Token storage configurable
- User data cached
- Automatic token refresh
- Error handling required
Related Documentation
- Custom Scheme - Main authentication scheme
- External Scheme - External user authentication
- Authentication Pages - Login pages
- Middleware - Route protection