Refactor auth and authz
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
================================================================================
|
||||
NOTIFIER CODEBASE - CODE DUPLICATION AND REFACTORING ANALYSIS
|
||||
Generated: 2025-10-26
|
||||
================================================================================
|
||||
|
||||
ANALYSIS SCOPE:
|
||||
- Directories analyzed: internal/service/, internal/notifier/, internal/auth/,
|
||||
internal/config/, api/rest/, api/grpc/, internal/queue/, cmd/
|
||||
- Go files scanned: 30+ files
|
||||
- Total lines of code analyzed: ~7,000
|
||||
|
||||
================================================================================
|
||||
KEY FINDINGS
|
||||
================================================================================
|
||||
|
||||
TOTAL DUPLICATION FOUND: ~380 lines of repeating/duplicate code
|
||||
|
||||
CRITICAL ISSUES: 1 (Exact duplication)
|
||||
- convertDomainToProtoType function (14 lines) - REMOVE
|
||||
|
||||
HIGH PRIORITY ISSUES: 3
|
||||
- Filter matching logic (60+ lines)
|
||||
- HTTP request handling (25+ lines)
|
||||
- Notifier validation pattern (4x8 lines)
|
||||
|
||||
MEDIUM PRIORITY ISSUES: 3
|
||||
- Auth validation logic (30+ lines)
|
||||
- Notifier registration pattern (50+ lines)
|
||||
- Default account resolution (35+ lines)
|
||||
|
||||
LOW PRIORITY ISSUES: 1
|
||||
- Error result creation (4x5 lines)
|
||||
|
||||
================================================================================
|
||||
DETAILED ISSUE BREAKDOWN
|
||||
================================================================================
|
||||
|
||||
Issue #1: Duplicate Type Conversion Function
|
||||
- Location: api/grpc/handler.go (lines 331-344)
|
||||
- Type: EXACT DUPLICATION
|
||||
- Impact: Code maintenance, inconsistency risk
|
||||
- Fix Effort: LOW (15 minutes)
|
||||
- Lines of code: 14
|
||||
|
||||
Issue #2: Repeated Validation Pattern in Notifiers
|
||||
- Location: 4 notifier files (smtp, slack, ntfy, stdout)
|
||||
- Type: Repeated pattern
|
||||
- Impact: Maintenance burden, consistency risk
|
||||
- Fix Effort: LOW (30 minutes)
|
||||
- Lines of code: 4x8 = 32
|
||||
|
||||
Issue #3: Identical HTTP Request Handling
|
||||
- Location: Slack and Ntfy notifiers
|
||||
- Type: Code duplication
|
||||
- Impact: Maintenance, future improvements harder
|
||||
- Fix Effort: LOW-MEDIUM (45 minutes)
|
||||
- Lines of code: 25+
|
||||
|
||||
Issue #4: Repetitive Filter Matching Logic
|
||||
- Location: internal/service/service.go (lines 481-540)
|
||||
- Type: Repeated pattern
|
||||
- Impact: Readability, extensibility, maintainability
|
||||
- Fix Effort: LOW (40 minutes)
|
||||
- Lines of code: 60+
|
||||
|
||||
Issue #5: Duplicated Auth Validation
|
||||
- Location: REST and gRPC middleware (3 instances)
|
||||
- Type: Code duplication
|
||||
- Impact: Consistency, maintenance
|
||||
- Fix Effort: LOW-MEDIUM (50 minutes)
|
||||
- Lines of code: 30+
|
||||
|
||||
Issue #6: Repeated Notifier Registration
|
||||
- Location: cmd/server/main.go (lines 193-241)
|
||||
- Type: Repeated pattern
|
||||
- Impact: Extensibility, duplication maintenance
|
||||
- Fix Effort: MEDIUM (60 minutes)
|
||||
- Lines of code: 50+
|
||||
|
||||
Issue #7: Duplicate Default Account Lookup
|
||||
- Location: internal/config/config.go (lines 346-380)
|
||||
- Type: Repeated pattern
|
||||
- Impact: Code cleanliness, maintainability
|
||||
- Fix Effort: LOW-MEDIUM (45 minutes)
|
||||
- Lines of code: 35+
|
||||
|
||||
Issue #8: Error Result Creation Pattern
|
||||
- Location: Multiple notifier files
|
||||
- Type: Repeated pattern
|
||||
- Impact: Consistency
|
||||
- Fix Effort: LOW (30 minutes)
|
||||
- Lines of code: 4x5 = 20
|
||||
|
||||
================================================================================
|
||||
REFACTORING ROADMAP
|
||||
================================================================================
|
||||
|
||||
PHASE 1 - QUICK WINS (Recommended: Next 2 hours)
|
||||
[ ] Remove duplicate convertDomainToProtoType (15 min)
|
||||
[ ] Extract validation helper (30 min)
|
||||
[ ] Add error result helper (30 min)
|
||||
Subtotal: ~60 lines of duplication removed, 75 minutes
|
||||
|
||||
PHASE 2 - HIGH IMPACT (Recommended: Next sprint)
|
||||
[ ] Refactor filter matching (40 min)
|
||||
[ ] Extract auth validation (50 min)
|
||||
[ ] Create HTTP request helper (45 min)
|
||||
Subtotal: ~150 lines of duplication removed, 135 minutes
|
||||
|
||||
PHASE 3 - NICE TO HAVE (Later)
|
||||
[ ] Generic registration function (60 min)
|
||||
[ ] Generic default resolution (45 min)
|
||||
Subtotal: ~85 lines of duplication removed, 105 minutes
|
||||
|
||||
================================================================================
|
||||
ESTIMATED IMPACT
|
||||
================================================================================
|
||||
|
||||
After Phase 1:
|
||||
- 60 lines of duplication removed (15%)
|
||||
- 3 duplicate patterns eliminated
|
||||
- 75 minutes of implementation
|
||||
- Immediate code quality improvement
|
||||
|
||||
After Phase 1+2:
|
||||
- 250 lines of duplication removed (65%)
|
||||
- 6 duplicate patterns eliminated
|
||||
- 210 minutes total implementation
|
||||
- Significant maintainability improvement
|
||||
|
||||
After All Phases:
|
||||
- 380 lines of duplication removed (100%)
|
||||
- 8 duplicate patterns eliminated
|
||||
- 315 minutes total implementation
|
||||
- ~60% reduction in maintenance effort
|
||||
|
||||
================================================================================
|
||||
RISK ASSESSMENT
|
||||
================================================================================
|
||||
|
||||
All refactorings are LOW RISK because:
|
||||
✓ They extract existing patterns without changing behavior
|
||||
✓ No public API changes
|
||||
✓ All can be tested with existing test suite
|
||||
✓ Changes are localized to internal utilities
|
||||
✓ Incremental refactoring possible
|
||||
✓ Easy to revert if needed
|
||||
|
||||
================================================================================
|
||||
BENEFITS OF REFACTORING
|
||||
================================================================================
|
||||
|
||||
CODE QUALITY:
|
||||
- Improved readability (reduce repetition)
|
||||
- Better maintainability (single source of truth)
|
||||
- Easier to extend (less duplication = less to update)
|
||||
|
||||
DEVELOPMENT VELOCITY:
|
||||
- Faster debugging (fewer places to look)
|
||||
- Quicker feature additions (less duplicate code to update)
|
||||
- Easier to understand (less cognitive load)
|
||||
|
||||
RISK REDUCTION:
|
||||
- Lower chance of inconsistency bugs
|
||||
- Easier to update logic consistently across codebase
|
||||
- Reduced surface area for bugs
|
||||
|
||||
TECHNICAL DEBT:
|
||||
- Reduce accumulated duplication
|
||||
- Improve code organization
|
||||
- Make codebase more maintainable
|
||||
|
||||
================================================================================
|
||||
IMPLEMENTATION GUIDELINES
|
||||
================================================================================
|
||||
|
||||
APPROACH:
|
||||
1. Make incremental changes (one issue at a time)
|
||||
2. Test after each change (run existing test suite)
|
||||
3. Review code changes for consistency
|
||||
4. Update documentation if needed
|
||||
|
||||
TESTING:
|
||||
- Phase 1: Run existing unit tests (no behavior changes)
|
||||
- Phase 2: Add unit tests for new helper functions
|
||||
- Phase 3: Integration tests for registration flow
|
||||
- All phases: Ensure 100% backward compatibility
|
||||
|
||||
PRIORITY:
|
||||
1. Do Phase 1 immediately (quick wins)
|
||||
2. Schedule Phase 2 for next sprint
|
||||
3. Consider Phase 3 for future cleanup
|
||||
|
||||
================================================================================
|
||||
FILES AFFECTED BY REFACTORING
|
||||
================================================================================
|
||||
|
||||
Core Files:
|
||||
- internal/notifier/notifier.go (add helpers)
|
||||
- internal/notifier/smtp.go (reduce duplication)
|
||||
- internal/notifier/slack.go (reduce duplication)
|
||||
- internal/notifier/ntfy.go (reduce duplication)
|
||||
- internal/notifier/stdout.go (reduce duplication)
|
||||
- internal/service/service.go (refactor filtering)
|
||||
- internal/auth/auth.go (add validation method)
|
||||
- internal/auth/rest_middleware.go (use new validation)
|
||||
- internal/auth/grpc_middleware.go (use new validation)
|
||||
- internal/config/config.go (use generic helpers)
|
||||
- cmd/server/main.go (use generic registration)
|
||||
- api/grpc/handler.go (remove duplicate function)
|
||||
|
||||
Supporting Files:
|
||||
- Tests for all refactored modules
|
||||
- Documentation (if applicable)
|
||||
|
||||
================================================================================
|
||||
NEXT STEPS
|
||||
================================================================================
|
||||
|
||||
1. Review this analysis
|
||||
2. Prioritize which phase to start with
|
||||
3. Assign developer to Phase 1 tasks
|
||||
4. Create tickets for Phase 2 and Phase 3
|
||||
5. Schedule refactoring work into sprint planning
|
||||
|
||||
Recommended: Start with Phase 1 immediately (high impact, low effort)
|
||||
|
||||
================================================================================
|
||||
DOCUMENTATION GENERATED
|
||||
================================================================================
|
||||
|
||||
Files created:
|
||||
1. DUPLICATION_ANALYSIS.md - Comprehensive detailed analysis (21 KB)
|
||||
2. REFACTORING_QUICKREF.md - Quick reference guide for developers
|
||||
3. ANALYSIS_SUMMARY.txt - This executive summary
|
||||
|
||||
All files located in: /Users/igodwin/Workspace/notifier/
|
||||
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user