Single Source of Truth Architecture - Complete authentication state management with storage-based getAuthState() as sole authoritative source
This commit is contained in:
72
README.md
72
README.md
@@ -1,51 +1,47 @@
|
||||
Nostr_Login_Lite
|
||||
===========
|
||||
|
||||
## Floating Tab API
|
||||
## API
|
||||
|
||||
Configure persistent floating tab for login/logout:
|
||||
Configure for login/logout:
|
||||
|
||||
```javascript
|
||||
await NOSTR_LOGIN_LITE.init({
|
||||
// Set the initial theme (default: 'default')
|
||||
theme: 'dark', // Choose from 'default' or 'dark'
|
||||
|
||||
// Standard configuration options
|
||||
await window.NOSTR_LOGIN_LITE.init({
|
||||
theme: 'default',
|
||||
|
||||
methods: {
|
||||
extension: true,
|
||||
local: true,
|
||||
seedphrase: true, // ✅ Must be explicitly enabled
|
||||
readonly: true,
|
||||
connect: true,
|
||||
otp: true
|
||||
otp: false
|
||||
},
|
||||
|
||||
// Floating tab configuration (now uses theme-aware text icons)
|
||||
floatingTab: {
|
||||
enabled: true,
|
||||
hPosition: 0.95, // 0.0-1.0 or '95%' from left
|
||||
vPosition: 0.5, // 0.0-1.0 or '50%' from top
|
||||
getUserInfo: true, // Fetch user profile name from relays
|
||||
getUserRelay: [ // Relays for profile queries
|
||||
'wss://relay.damus.io',
|
||||
'wss://nos.lol'
|
||||
],
|
||||
hPosition: 0.95, // Near right edge
|
||||
vPosition: 0.1, // Near top
|
||||
|
||||
appearance: {
|
||||
style: 'pill', // 'pill', 'square', 'circle', 'minimal'
|
||||
theme: 'auto', // 'auto' follows main theme
|
||||
icon: '[LOGIN]', // Now uses text-based icons like [LOGIN], [KEY], [NET]
|
||||
text: 'Login'
|
||||
style: 'pill',
|
||||
icon: '[LOGIN]',
|
||||
text: 'Sign In',
|
||||
iconOnly: false
|
||||
},
|
||||
|
||||
behavior: {
|
||||
hideWhenAuthenticated: false,
|
||||
hideWhenAuthenticated: false, // Keep visible after login
|
||||
showUserInfo: true,
|
||||
autoSlide: true
|
||||
},
|
||||
animation: {
|
||||
slideDirection: 'auto' // 'auto', 'left', 'right', 'up', 'down'
|
||||
}
|
||||
|
||||
getUserInfo: true, // ✅ Fetch user profiles
|
||||
getUserRelay: ['wss://relay.laantungir.net'] // Custom relays for profiles
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// After initialization, you can switch themes dynamically:
|
||||
NOSTR_LOGIN_LITE.switchTheme('dark');
|
||||
NOSTR_LOGIN_LITE.switchTheme('default');
|
||||
@@ -86,3 +82,31 @@ const modal = NOSTR_LOGIN_LITE.embed('#login-container', {
|
||||
```
|
||||
|
||||
Container can be CSS selector or DOM element. Modal renders inline without backdrop overlay.
|
||||
|
||||
## Logout API
|
||||
|
||||
To log out users and clear authentication state:
|
||||
|
||||
```javascript
|
||||
// Unified logout method - works for all authentication methods
|
||||
window.NOSTR_LOGIN_LITE.logout();
|
||||
```
|
||||
|
||||
This will:
|
||||
- Clear persistent authentication data from localStorage
|
||||
- Dispatch `nlLogout` event for custom cleanup
|
||||
- Reset the authentication state across all components
|
||||
|
||||
### Event Handling
|
||||
|
||||
Listen for logout events in your application:
|
||||
|
||||
```javascript
|
||||
window.addEventListener('nlLogout', () => {
|
||||
console.log('User logged out');
|
||||
// Clear your application's UI state
|
||||
// Redirect to login page, etc.
|
||||
});
|
||||
```
|
||||
|
||||
The logout system works consistently across all authentication methods (extension, local keys, NIP-46, etc.) and all UI components (floating tab, modal, embedded).
|
||||
|
||||
Reference in New Issue
Block a user