Update documentation to reflect new authentication architecture
Remove legacy references to global auth composable and document the new dependency injection pattern with single source of truth. Key Documentation Updates: • Update authentication.md with DI architecture details and usage patterns • Update chat integration docs to reference AuthService and remove legacy patterns • Add comprehensive authentication-architecture.md with full technical details • Document migration path from legacy global auth to current DI pattern Content Changes: • Replace useAuth.ts references with useAuthService.ts • Document AuthService as singleton with dependency injection • Add code examples for both component and service usage • Explain benefits of new architecture (single source of truth, no timing issues) • Update chat integration to reflect service-based architecture 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4feb5459cc
commit
6cb10a31db
3 changed files with 311 additions and 11 deletions
|
|
@ -78,11 +78,74 @@ The application uses the following LNBits API endpoints:
|
|||
- Route protection for authenticated pages
|
||||
- Secure logout with token cleanup
|
||||
|
||||
## Migration from Nostr
|
||||
## Architecture
|
||||
|
||||
The following components have been removed or replaced:
|
||||
The authentication system uses a **dependency injection pattern** for clean modular architecture:
|
||||
|
||||
- `useIdentity.ts` → `useAuth.ts`
|
||||
### Core Components
|
||||
|
||||
1. **AuthService** (`src/modules/base/auth/auth-service.ts`)
|
||||
- Singleton service that manages authentication state
|
||||
- Handles API calls to LNBits
|
||||
- Provides reactive state management
|
||||
|
||||
2. **useAuthService** (`src/composables/useAuthService.ts`)
|
||||
- Wrapper composable that provides unified access to AuthService
|
||||
- Uses dependency injection to access the service
|
||||
- Provides consistent API for all components
|
||||
|
||||
3. **Dependency Injection Container** (`src/core/di-container.ts`)
|
||||
- Manages service registration and injection
|
||||
- Ensures single source of truth across modules
|
||||
|
||||
### Usage Pattern
|
||||
|
||||
Components access authentication through the `useAuth()` composable:
|
||||
|
||||
```typescript
|
||||
import { useAuth } from '@/composables/useAuthService'
|
||||
|
||||
export default defineComponent({
|
||||
setup() {
|
||||
const auth = useAuth()
|
||||
|
||||
// Access authentication state
|
||||
const isAuthenticated = auth.isAuthenticated
|
||||
const currentUser = auth.currentUser
|
||||
|
||||
// Call authentication methods
|
||||
const login = (credentials) => auth.login(credentials)
|
||||
const logout = () => auth.logout()
|
||||
|
||||
return {
|
||||
isAuthenticated,
|
||||
currentUser,
|
||||
login,
|
||||
logout
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### Service Registration
|
||||
|
||||
The AuthService is registered in the base module and made available through dependency injection:
|
||||
|
||||
```typescript
|
||||
// In base module
|
||||
container.provide(SERVICE_TOKENS.AUTH_SERVICE, authService)
|
||||
|
||||
// In components
|
||||
const authService = injectService(SERVICE_TOKENS.AUTH_SERVICE)
|
||||
```
|
||||
|
||||
## Migration from Legacy Architecture
|
||||
|
||||
The following components have been updated:
|
||||
|
||||
- **Legacy**: Global `useAuth.ts` composable → **Current**: `useAuthService.ts` with dependency injection
|
||||
- **Legacy**: Direct service imports → **Current**: Dependency injection pattern
|
||||
- **Legacy**: Dual authentication detection → **Current**: Single source of truth via AuthService
|
||||
- `IdentityDialog.vue` → `LoginDialog.vue`
|
||||
- `PasswordDialog.vue` → Integrated into `LoginDialog.vue`
|
||||
- Nostr connection status → User authentication status
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue