pushery/email-magic-link-for-laravel
Passwordless authentication for Laravel using emailed magic links. Let users sign in with a single click, no passwords needed. Includes signed, expiring links, customizable views and routes, and simple setup for secure, friction-free login.
mail_identity binds a class implementing the new MailIdentity contract, letting the host application supply the application/tenant name and recipient greeting used by the magic-link and code mail. ui.layout binds a host Blade component so the request, confirmation, and code screens render inside the application’s own frame. Both are additive extension points consistent with Laravel’s container/config idioms and do not alter the invitation contracts or scope semantics introduced in v0.34.0. The design deliberately preserves the existing mail class (MagicLinkNotification) and the existing WireKit screens, so the package continues to work without configuration.mail_identity, mail uses app.name and the bundled greeting; absent or unresolvable ui.layout, screens keep their own layout with a logged warning. No migration or contract change to existing InvitationStore/InvitationIssuer implementations is indicated. The main integration work is host-side: implementing MailIdentity correctly, ensuring the named Blade component exists and accepts title plus a slot, and aligning WireKit to the documented 2.68.0 floor. The WireKit floor is a composer suggest, not a hard constraint, so it will not block installation but also will not enforce rendering correctness.MailIdentity is reported and the mail still goes out under the bundled identity, which protects deliverability but can silently ship misbranded or incorrect tenant naming. The layout path is similarly graceful: an unresolvable component is dropped and logged at warning, so a typo degrades presentation rather than breaking sign-in, but it may produce repeated warning noise and inconsistent UI across environments. The more substantive risk is contextual: mail_identity and ui.layout are global configuration values, while the package now supports multi-tenant scoping. If different tenants require different sender identities or layouts, the application must determine whether MailIdentity receives sufficient account/tenant context to resolve the right values, and whether layout selection can be made tenant-aware at runtime. Trust and escaping also matter: the host layout owns the page title and slot rendering, so it must escape untrusted content consistently with the rest of the application.MailIdentity method signature, and does it receive the account and/or request context needed to resolve tenant-specific naming? Is MailIdentity resolved once per request or per mail, and are exceptions rate-limited or deduplicated in reporting? Can ui.layout be selected dynamically per tenant or per request, or is it fixed at config/bootstrap time? Which Blade component contract is expected — does the package pass only title and the slot, and who is responsible for escaping the title? Are there existing mail content assertions beyond the MagicLinkNotification class assertion that could break when mail_identity is configured? Is WireKit 2.68.0 pinned in the host composer.json, or only suggested, and what specifically renders incorrectly below the floor? Does v0.36.0 retain the same Laravel/PHP support matrix as v0.34.0?mail_identity is the idiomatic way to replace hardcoded app.name in transactional mail without forking package views, and ui.layout lets authentication screens inherit the host’s <head>, title, theme, and navigation. Multi-tenant applications should treat both as branding seams layered on top of the existing scope work, not as tenant-isolation mechanisms.MailIdentity, bind it via mail_identity, and confirm the resulting subjects, introductions, sign-offs, and opening lines in both the link and code mails. If host chrome is desired, create the Blade component named by ui.layout, verify it accepts title and renders $slot, and confirm the request, confirmation, and code screens. Raise WireKit to 2.68.0 in composer.json rather than relying on the suggestion, since older versions reportedly still render but without the corrected behavior. Leave both settings unset initially if a staged rollout is preferred; defaults preserve prior behavior.MagicLinkNotification remain valid by design. Risk concentrates in host-provided code: a broken MailIdentity degrades to bundled branding with a reported exception, and a missing layout component degrades to the bundled layout with a warning. Applications on WireKit below 2.68.0 are not blocked but may see rendering defects the release notes describe as fixed above the floor.MailIdentity in a non-production environment, test both mail types, and confirm fallback behavior by temporarily throwing from the implementation. Fourth, add the host layout component and verify all three screens, including the missing-component warning path. Fifth, enable both settings in production behind config or feature flag, starting with one tenant or environment. Rollback is simple: unset mail_identity and ui.layout to return to bundled behavior without redeploying package code.MailIdentity must be resilient — it is called on the mail path and its failures are logged but suppressed — and that the layout component is now part of the authentication UI contract. Keep the WireKit floor current in composer.json to avoid drifting below supported rendering behavior.MailIdentity exceptions and warning-level missing-component logs. Customer-facing support should know that fallback mail is still delivered, so a branding failure is not an outage but may require correction.MailIdentity runs on the mail issuance path, not per request in general, and layout rendering is ordinary Blade composition. The only scale-adjacent concern is log volume if a layout component name is wrong in a high-traffic environment, since every render logs a warning; alerting should distinguish a persistent misconfiguration from transient noise.mail_identity silently sends mail under the bundled name and greeting while reporting an exception — deliverability is preserved but tenant or brand identity may be wrong. A missing or misnamed ui.layout component drops the host layout and logs warnings, producing visually inconsistent sign-in screens. WireKit below 2.68.0 may render screens with known defects despite remaining functional. A host layout that fails to escape title or slot content could introduce an injection issue. None of these are deployment-blocking in the way the v0.34.0 contract change was.MailIdentity implementation’s tenant-awareness and failure behavior, the layout component’s escaping and theme assumptions, and confirming the WireKit version in composer.json. A short test matrix covering default behavior, configured mail identity, throwing mail identity, present layout, and missing layout covers the release’s meaningful risk.How can I help you explore Laravel packages today?