Files
welshman/docs/net/auth.md
T
2025-06-10 15:07:58 -07:00

43 lines
1.2 KiB
Markdown

# Auth
Handles NIP-42 relay authentication flow.
## Core Classes
### `AuthState`
Manages authentication state for a socket connection.
**Status Values:**
- `AuthStatus.None` - No authentication required/attempted
- `AuthStatus.Requested` - Relay requested authentication
- `AuthStatus.PendingSignature` - Waiting for user to sign auth event
- `AuthStatus.DeniedSignature` - User denied signing
- `AuthStatus.PendingResponse` - Waiting for relay response
- `AuthStatus.Forbidden` - Authentication failed
- `AuthStatus.Ok` - Authentication successful
**Methods:**
- `doAuth(sign)` - Authenticate with the relay using provided signing function
- `attemptAuth(sign)` - Attempt authentication with timeout handling
- `cleanup()` - Clean up event listeners
**Events:**
- `AuthStateEvent.Status` - Emitted when authentication status changes
## Example
```typescript
const authState = new AuthState(socket)
// Listen for auth status changes
authState.on(AuthStateEvent.Status, (status) => {
console.log('Auth status:', status)
})
// Attempt authentication when relay requests it
await authState.attemptAuth(async (template) => {
return await signer.signEvent(template)
})
```