ADR-002: Both felogin Extension and Standalone Plugin
- Status
-
Accepted
- Date
-
2026-03-14
- Decision-makers
-
Sebastian Mendel
Context
TYPO3 frontend login is typically handled by ext:felogin. The question is how
nr_passkeys_fe integrates its passkey login UI with the existing login flow.
Three approaches were considered:
A. Extend felogin only — Inject via ModifyLoginFormViewEvent
B. Own Extbase plugin only — Independent login plugin
C. Both — felogin integration AND standalone plugin
Decision
Option C: Both felogin extension and standalone plugin.
- felogin integration: PSR-14 listener on
ModifyLoginFormViewEventinjects a passkey login button into the existing felogin form. 50 lines of code. - Standalone plugin:
PasskeyLoginPlugin(Extbase) that can be placed on any page independently of felogin.
Consequences
Positive:
- Sites using felogin get seamless integration with zero template changes
- New sites can use the standalone plugin without felogin dependency
- Mirrors nr-passkeys-be pattern (injects into BE login + provides own UI)
- Minimal code overhead ( 50 lines for felogin hook)
Negative:
- Two login UI paths to maintain and test
- Potential confusion for integrators ("which one do I use?")
Mitigation:
- Clear documentation: "Using felogin? It just works. Custom login? Use the plugin."
- Shared Fluid partials between both paths to minimize template duplication
Alternatives Considered
Option A (felogin only): Would exclude sites not using felogin. Some TYPO3 installations use custom login forms or third-party login extensions.
Option B (Standalone only): Would force felogin users to add a second plugin alongside felogin, creating an awkward dual-form UX.