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

Profile Filament Plugin Laravel Package

rawilk/profile-filament-plugin

A Filament plugin that adds a customizable user profile to any panel, with multi-factor authentication, password management, session management, and more. Opinionated yet flexible, it handles the boilerplate so you can ship faster.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. rawilk/profile-filament-plugin is a Filament v3 panel plugin, not a standalone domain package. It ships its own pages, routes, views, compiled CSS, migrations, config, service classes (Mfa, Agent), and a ProfileFilamentPlugin::make() registration hook. It fits cleanly if — and only if — the host application already runs Filament 3.2+ panels and expects Filament-native navigation, clusters, actions, and layout. It assumes an Eloquent User model with standard auth semantics (password hashes, email verification, remember tokens) and a database-backed session driver for the "active devices" page. Teams running Livewire/nova/custom admin UIs will get little value.

Functionally it covers a well-scoped slice of account self-service: profile details, password change, TOTP/passkey MFA, sudo (password re-confirmation) challenges, pending email change with verification, and session/device revocation. That is a meaningful build-vs-buy delta — these are the flows every SaaS rebuilds badly at least once.

Integration feasibility. The install path is intentionally short: composer require, publish profile-filament-migrations, php artisan migrate, publish profile-filament-config, register the plugin in a panel provider. Realistically a one-to-two week effort for a mid-level Laravel engineer including customization, not a multi-sprint project. The friction lands in the second week: reconciling the package's expected user columns, deciding whether to migrate existing MFA/2FA data into its schema, and re-skinning pages to match design system conventions.

Technical risk. The dominant risk is API volatility, not code quality. The README is explicit that the package is pre-release and that "API and functionality are subject to change without a major version bump." The v0.3.0 release is the proof point: page classes were moved from Filament\Pages\* to Filament\Clusters\Profile\*, plugin methods (addPage, navigation) were removed, a trait was dropped, a dependency was dropped, and the minimum Filament version was raised — all inside a 0.x line. Any team that subclassed or extended those classes took a breaking hit from a patch-adjacent upgrade.

Secondary risks:

  • Security-surface ownership. This package owns MFA enrollment, passkey registration, sudo-mode gating, password reset, and session revocation. v0.1.2 shipped a fix for "sudo challenge action not receiving params... causing sudo mode to be bypassed." That is a real, previously-shipped auth bypass in an 0.x package. Expect more of these; the question is whether your review process catches them before users do.
  • Adoption signals are thin. 39 stars, 0 dependents, single maintainer (Randall Wilk). There is no downstream corpus of production users stress-testing edge cases (multi-guard, multi-tenant, custom user models, SSO-adjacent flows).
  • Dependency coupling. Tied to Filament 3.x internals (clusters, panel registry), rawilk/filament-password-input, bacon/bacon-qr-code ^3.0, @simplewebauthn/browser (compiled asset — you inherit their build, not yours), and passkey/WebAuthn concepts borrowed from spatie/laravel-passkeys. Each is an upgrade gate.
  • Data anomaly worth flagging. The supplied metadata lists a last release of 2026-10-19, which is inconsistent with the changelog content through v0.7.9. Treat the "last release" field as unreliable and verify against Packagist before scheduling.
  • Migration ownership. Publishable migrations are a convenience, but auth tables in the app's migration path mean schema changes become your problem to sequence.

Key questions for the team.

  1. Does our product actually need self-service MFA/passkey management, or is this scope creep beyond "edit my name and avatar"?
  2. What is our blast radius if a 0.x minor bump breaks a page subclass or route — hours or a sprint?
  3. Are we willing to fork and pin, and who owns that fork?
  4. Which compliance regime applies (SOC 2, ISO 27001, HIPAA)? MFA enrollment/removal and session revocation need audit logging the package does not provide out of the box.
  5. Does our User model, guard configuration, and session driver match the package's assumptions, or does it need adaptation?
  6. Is there any existing MFA/2FA data to migrate, and what is the fallback if users are locked out mid-migration?

Integration Approach

Stack fit. Laravel 10/11, PHP 8.x, Filament 3.2+, MySQL/Postgres, database or redis session driver. The package is opinionated about page structure and navigation grouping — teams that have already customized Filament navigation heavily should expect to reconcile.

Migration path.

  1. Vendor-pin, don't float. Require an exact version ("rawilk/profile-filament-plugin": "0.7.9"), commit composer.lock, and treat upgrades as deliberate change requests with a review gate. Do not allow ^0.7 in a production branch.
  2. Publish migrations into database/migrations and own them. Never rely on vendor:publish at deploy time; that couples deploy determinism to a package tag.
  3. Publish and version-control the config in config/profile-filament.php, with environment-specific overrides for password rules, MFA enforcement policy, and session listing behavior.
  4. Decide extend-vs-fork up front. If customization is limited to config, brand, and translations, stay on the vendor package. If you need to override page classes, actions, or the MFA service, fork into a private VCS repo and rebase deliberately — otherwise you will be repeatedly broken by namespace churn.
  5. Backfill plan for existing auth state. Map current 2FA/passkey records into the package's schema (or force re-enrollment with a grace window). Provide an explicit "MFA reset" admin path so support can unblock users.

Compatibility.

  • Pin Filament to a minor line and bump the plugin only in lockstep with Filament upgrades.
  • Watch @simplewebauthn/browser — the plugin ships compiled JS; browser/webauthn API changes are outside your control.
  • Register the plugin per-panel. If you run multiple panels (admin + customer), decide explicitly which panels get profile pages; multi-panel route registration is a common misconfiguration.
  • i18n: Brazilian Portuguese exists among community contributions; verify coverage for your locales before promising localized UX.

Sequencing.

  1. Spike (1 sprint, timeboxed): install in a throwaway branch, register on a non-production panel, walk every flow, catalogue what breaks against our user model.
  2. Security review gate: threat-model MFA enrollment, sudo-mode gating, pending-email-change, and session revocation. Confirm sudo challenge parameters are bound and cannot be bypassed (regression test specifically for the v0.1.2 class of bug).
  3. Internal acceptance tests: author our own feature tests for the flows — do not rely solely on the package's CI. These become the guardrail for every upgrade.
  4. Fork/build decision based on spike findings.
  5. Staging rollout behind a feature flag, keep the existing profile pages routable for a rollback window.
  6. Canary at 5–10% of internal users, then general availability, then remove the legacy profile code.

Operational Impact

Maintenance. Budget roughly 10–15% of one backend engineer's time ongoing: tracking CHANGELOG and releases, rebasing the fork, re-running acceptance tests, and handling Filament version upgrades. The true cost is not the package's churn in isolation — it is the coupling of that churn to your Filament upgrade calendar. Every Filament minor bump becomes a two-package upgrade with a plugin compatibility question. Add recurring cost for keeping the compiled front-end assets consistent with your app's Tailwind build if you customize styling.

Support. MIT license, no SLA, GitHub issues as the only channel, single maintainer. There is no commercial backing and no vendor escalation path. This is acceptable for internal admin tooling; it is a harder sell for a customer-facing auth surface. Mitigate by: forking so you can patch unilaterally, maintaining an internal runbook for each profile flow, and pre-authoring the "disable MFA / reset passkey" support procedure your help desk will need on day one.

Scaling. The package itself is not a throughput concern — pages are Filament/Livewire UI, and the expensive operations are ordinary Eloquent writes on the users table. Two things to watch:

  • Session/device listing queries the sessions table on page load. On a large sessions table without an index on user_id, this becomes a slow page. Verify indexing and consider a retention/cleanup job.
  • MFA verification path adds a DB read/write per login for enrolled users. Negligible at normal volumes; measure before assuming.
  • Assets are pre-compiled and served by the package — no build pipeline cost, but also no tree-shaking benefit.

Failure modes. Ranked by severity:

  1. Auth bypass in sudo mode — precedent exists (v0.1.2). Highest-severity class; mitigate with mandatory regression tests on every upgrade and a security-review gate.
  2. Breaking namespace/API changes in a minor release — v0.3.0 precedent. Mitigate with exact pins and fork ownership.
  3. Redirect loops / null-auth-user crashes in pending-email-change flows (multiple historical fixes: v0.3.2, v0.3.0). Mitigate with edge-case tests covering unauthenticated and mid-flow states.
  4. Migration conflicts on deploy — mitigate by owning published migrations and testing the forward path on a production-shaped dataset.
  5. Users locked out of MFA with no self-service recovery — mitigate with an admin reset capability and a documented support path before launch.
  6. Asset/style drift — compiled CSS referencing color palettes that your theme renames (v0.2.1 addressed a success-palette issue). Cosmetic, but visible.

Ramp-up. Documentation lives at randallwilk.dev/docs/profile-filament-plugin and includes installation, configuration, and customization guides — materially better than most 0.x packages. Expect 3–5 days for a Laravel-fluent engineer to be productive and 2–3 weeks for genuine fluency in the MFA/sudo internals (which is what you need to review security-sensitive changes). Onboarding risk is concentrated: if one engineer owns this integration and leaves, you inherit an auth surface nobody understands. Assign a named secondary owner and require that the acceptance tests and runbook live in the app repo, not in someone's head.

Overall read. Technically well-shaped for the narrow case of "Filament app that needs a real profile/security page set." The build-vs-buy math on MFA + passkeys + sudo + session management is genuinely favorable. The cost is a pre-1.0 dependency on your authentication surface with a single maintainer, thin adoption, and a demonstrated willingness to break 0.x APIs. Approve as a pinned, forked, security-reviewed integration with a feature flag and rollback path; reject as a floating dependency dropped into a customer-facing auth flow without an owning engineer.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings