Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Email Magic Link For Laravel Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

  • Architecture fit: The package remains a Laravel application-layer authentication/invitation domain, and v0.36.0 extends it with two optional, config-driven seams rather than new domain primitives. 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.
  • Integration feasibility: High for existing consumers. Both features are opt-in and have documented fallbacks: absent 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.
  • Technical risk: Low to medium. The mail path is defensively designed: an exception from 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.
  • Key questions: What is the exact 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?

Integration Approach

  • Stack fit: Strong fit for Laravel applications that already customize mail branding and Blade layouts. 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.
  • Migration path: Upgrade the package normally; no database migration is reported. If mail branding is desired, implement 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.
  • Compatibility: Backward compatible at the call and contract level for existing consumers. Existing tests asserting on 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.
  • Sequencing: First, upgrade the package and pin WireKit 2.68.0. Second, run the existing authentication and invitation regression suite with both new settings unset to confirm no behavioral change. Third, implement and configure 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.

Operational Impact

  • Maintenance: Low. Two configuration keys and, at most, one new class and one Blade component are the ongoing surface. Teams should document that 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.
  • Support: Support questions will shift from “why does the sign-in mail say the wrong name?” to “why did the mail fall back to the default name?” and “why do the screens look unstyled in one environment?” Runbooks should point engineers at reported 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.
  • Scaling: Negligible performance impact. 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.
  • Failure modes: Misconfigured 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.
  • Ramp-up: Low. A developer can adopt either feature in under an hour. Ramp-up time is best spent on the 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.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib