Skip to content

Password Policy

This page is generated from package source documentation in the Capell packages repository and the checked-in manifest. Source documentation is not distribution status. Before running a Composer command, verify that the exact package and compatible 1.x release are available through public Packagist or the authenticated marketplace account.

Field Value
Composer package capell-app/password-policy
Package slug password-policy
Product group Capell Security & Compliance
Tier premium
Bundle security-compliance
Runtime contexts admin, console
Capell version ^1.0
Catalogue role extension
Release channel Labs
Source repository capell-app/packages
Source path packages/password-policy
Docs source packages/password-policy/docs
Manifest capell.json

Password Policy is an Available, Schema-owning Capell package in the Capell Security & Compliance product group. It ships as capell-app/password-policy and extends these surfaces: admin, console.

Password Policy adds configurable password strength, expiry, forced-change, reuse-history, and compromised-password checks for Capell accounts.

Admins configure the policy and can require a user to change their password. Users are directed through the forced-change screen when they are flagged for a change or their password has expired.

Evidence: src/Actions/EvaluatePasswordPolicyAction.php, src/Actions/ValidatePasswordChangeAction.php, src/Actions/RecordPasswordHistoryAction.php, tests/Unit/PasswordPolicyActionTest.php, src/Filament/Pages/PasswordPolicySettingsPage.php, src/Filament/Pages/ForcedPasswordChangePage.php, src/Actions/MarkUserForPasswordChangeAction.php, tests/Feature/PasswordPolicyAdminTest.php.

Status details:

  • Status: Available
  • Tier: premium
  • Bundle: security-compliance
  • Composer package: capell-app/password-policy
  • Namespace: Capell\PasswordPolicy
  • Theme key: not applicable

For developers: Policy evaluation and password updates live in typed Actions, while middleware enforces the result consistently across admin requests.

For teams: Operators can apply one account-password standard and identify users who need to update their credentials.

Evidence: src/Actions/EvaluatePasswordPolicyAction.php, src/Actions/UpdatePasswordAction.php, tests/Feature/EnsurePasswordPolicyComplianceMiddlewareTest.php, docs/overview.admin.md, src/Actions/BuildPasswordSecurityPostureReportAction.php, src/Actions/SendPasswordExpiryWarningNotificationsAction.php.

Screenshot contract: docs/screenshots.json.

Password Policy settings page Password Policy settings page Forced password change form Forced password change form
  • Password Policy settings page (admin, required).
  • Forced password change form (admin, required).
  • User table password policy columns and filters (admin, required).
  • Service providers: Capell\PasswordPolicy\Providers\PasswordPolicyServiceProvider.
  • Config files: packages/password-policy/config/capell-password-policy.php.
  • Migrations: packages/password-policy/database/migrations/2026_05_10_190863_01_add_password_policy_columns_to_users_table.php, packages/password-policy/database/migrations/2026_05_10_190863_02_create_password_policy_password_histories_table.php, packages/password-policy/database/migrations/2026_07_08_000001_add_password_policy_notification_timestamps_to_users_table.php.
  • Settings migrations: packages/password-policy/database/settings/2026_05_10_190864_01_create_password_policy_settings.php, packages/password-policy/database/settings/2026_06_04_000001_01_add_password_complexity_settings.php, packages/password-policy/database/settings/2026_06_16_000001_01_add_password_expiry_warning_settings.php.
  • Settings classes: PasswordPolicySettings.
  • Filament classes: PasswordPolicyPanelExtender, PasswordPolicyUserResourceBridge, ForcedPasswordChangePage, PasswordPolicySettingsPage, PasswordPolicySettingsSchema. The user resource bridge owns both admin user password lifecycle hooks and table contributions.
  • Events: PasswordChanged, PasswordExpired, UserMarkedForPasswordChange.
  • Actions: BuildPasswordSecurityPostureReportAction, EvaluatePasswordPolicyAction, MarkUserForPasswordChangeAction, NotifyPasswordPolicyLifecycleEventAction, PrunePasswordHistoryAction, RecordPasswordHistoryAction, SendPasswordExpiryWarningNotificationsAction, UpdatePasswordAction, ValidatePasswordChangeAction.
  • Data objects: PasswordChangeData, PasswordPolicyStatusData, PasswordSecurityPostureReportData, ResolvedPasswordPolicySettingsData.
  • Command signatures: capell:password-policy:doctor, capell:password-policy:expire-stale, capell:password-policy:prune-history, capell:password-policy:require-change, capell:password-policy:send-expiry-warnings.
  • Console command classes: ExpireStalePasswordsCommand, PasswordPolicyDoctorCommand, PrunePasswordHistoryCommand, RequirePasswordChangeCommand, SendExpiryWarningsCommand.
  • Manifest contributions: admin-action-extender: Capell\PasswordPolicy\Manifest\PasswordPolicyAdminExtendersContribution, admin-page: Capell\PasswordPolicy\Manifest\PasswordPolicyAdminPagesContribution, console-command: Capell\PasswordPolicy\Manifest\PasswordPolicyConsoleCommandsContribution, health-check: Capell\PasswordPolicy\Manifest\PasswordPolicyHealthContribution, setting: Capell\PasswordPolicy\Manifest\PasswordPolicySettingsContribution.
  • Health checks: Capell\PasswordPolicy\Health\PasswordPolicyHealthCheck.
  • Blade views: packages/password-policy/resources/views/filament/pages/forced-password-change.blade.php.
  • Required tables: password_policy_password_histories.
  • Core record references in migrations: users via user_id.
  • Migration files: 2026_05_10_190863_01_add_password_policy_columns_to_users_table.php, 2026_05_10_190863_02_create_password_policy_password_histories_table.php, 2026_07_08_000001_add_password_policy_notification_timestamps_to_users_table.php.
  • Migration impact: run host migrations through the package install flow before opening package surfaces.
  • Deletion/retention behaviour: migrations declare cascade-on-delete relationships; no timed pruning or retention schedule is declared in capell.json.
  • Required packages: capell-app/admin, capell-app/core.
  • Admin navigation: declares admin-page: PasswordPolicyAdminPagesContribution; each Filament page or resource controls its own navigation visibility.
  • Admin/editor extensions: admin-action-extender: PasswordPolicyAdminExtendersContribution.
  • Permissions: none declared in capell.json.
  • Public routes: none declared.
  • Database changes: package migrations are declared.
  • Config: config/capell-password-policy.php.
  • Settings: Capell\PasswordPolicy\Settings\PasswordPolicySettings.
  • Queues or schedules: none declared.
  • Cache tags: none declared.
  • Commands: capell:password-policy:doctor, capell:password-policy:expire-stale, capell:password-policy:prune-history, capell:password-policy:require-change, capell:password-policy:send-expiry-warnings.
  • Keep required Capell packages on compatible v4 releases: capell-app/admin, capell-app/core.
  • Run migrations before opening package resources or public routes.
  • Review package configuration before production-like verification: config/capell-password-policy.php, Capell\PasswordPolicy\Settings\PasswordPolicySettings.
Symptom Likely cause Check Fix
Package surface is missing after install Provider or manifest is not loaded Confirm capell.json, package composer.json, and provider registration Reinstall the package, refresh Composer autoload, and clear host caches
Admin screen or command fails on missing table Package migrations have not run Check the tables listed in Data Model Run host migrations and rerun the focused package test
  1. Install the package: composer require capell-app/password-policy.
  2. Run the required setup: php artisan migrate.
  3. Open the Password Policy settings page and confirm the admin workflow loads.