init
This commit is contained in:
78
tasks/podcast-tui-app/04-authentication.md
Normal file
78
tasks/podcast-tui-app/04-authentication.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# 04. Build Optional Authentication System
|
||||
|
||||
meta:
|
||||
id: podcast-tui-app-04
|
||||
feature: podcast-tui-app
|
||||
priority: P2
|
||||
depends_on: [03]
|
||||
tags: [authentication, optional, solidjs, security]
|
||||
|
||||
objective:
|
||||
- Create authentication state management (disabled by default)
|
||||
- Build simple login screen with email/password
|
||||
- Implement 8-character code validation flow
|
||||
- Add OAuth placeholder screens
|
||||
- Create sync-only user profile
|
||||
|
||||
deliverables:
|
||||
- `src/stores/auth.ts` with authentication state store
|
||||
- `src/components/LoginScreen.tsx` with login form
|
||||
- `src/components/CodeValidation.tsx` with 8-character code input
|
||||
- `src/components/OAuthPlaceholder.tsx` with OAuth info
|
||||
- `src/components/SyncProfile.tsx` with sync-only profile
|
||||
|
||||
steps:
|
||||
- Create `src/stores/auth.ts` with Zustand store:
|
||||
- `user` state (initially null)
|
||||
- `isAuthenticated` state (initially false)
|
||||
- `login()` function
|
||||
- `logout()` function
|
||||
- `validateCode()` function
|
||||
- Create `src/components/LoginScreen.tsx`:
|
||||
- Email input field
|
||||
- Password input field
|
||||
- Login button
|
||||
- Link to code validation flow
|
||||
- Link to OAuth placeholder
|
||||
- Create `src/components/CodeValidation.tsx`:
|
||||
- 8-character code input
|
||||
- Validation logic (alphanumeric)
|
||||
- Submit button
|
||||
- Error message display
|
||||
- Create `src/components/OAuthPlaceholder.tsx`:
|
||||
- Display OAuth information
|
||||
- Explain terminal limitations
|
||||
- Link to browser redirect flow
|
||||
- Create `src/components/SyncProfile.tsx`:
|
||||
- User profile display
|
||||
- Sync status indicator
|
||||
- Profile management options
|
||||
- Add auth screens to Navigation (hidden by default)
|
||||
|
||||
tests:
|
||||
- Unit: Test authentication state management
|
||||
- Unit: Test code validation logic
|
||||
- Integration: Test login flow completes
|
||||
- Integration: Test logout clears state
|
||||
|
||||
acceptance_criteria:
|
||||
- Authentication is disabled by default (isAuthenticated = false)
|
||||
- Login screen accepts email and password
|
||||
- Code validation accepts 8-character codes
|
||||
- OAuth placeholder displays limitations
|
||||
- Sync profile shows user info
|
||||
- Login state persists across sessions
|
||||
|
||||
validation:
|
||||
- Run application and verify login screen is accessible
|
||||
- Try to log in with valid credentials
|
||||
- Try to log in with invalid credentials
|
||||
- Test code validation with valid/invalid codes
|
||||
- Verify authentication state persists
|
||||
|
||||
notes:
|
||||
- Authentication is optional and disabled by default
|
||||
- Focus on file sync, not user accounts
|
||||
- Use simple validation (no real backend)
|
||||
- Store authentication state in localStorage
|
||||
- OAuth not feasible in terminal, document limitation
|
||||
Reference in New Issue
Block a user