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