ownCloud Server app for defining and enforcing password policies for user accounts and public link shares. Licensed under GPL-2.0.
lib/-- PHP application logicjs/-- Frontend JavaScriptcss/-- Stylesheetstemplates/-- Server-side templatesappinfo/-- ownCloud app metadatal10n/-- Translation filestests/-- Unit and acceptance testsMakefile-- Build and test automationcomposer.json-- PHP dependencies
- PHP code follows ownCloud coding standards (phpcs)
- Static analysis with PHPStan and Phan
make dist # Build distribution package
make test-php-unit # Run PHP unit tests
make test-php-style # Check PHP code style
make test-php-phpstan # Run PHPStan
make test-php-phan # Run Phan
make test-acceptance-api # Run API acceptance tests
make clean # Clean build artifacts- Licensed under GPL-2.0 (copyleft). Apache 2.0 migration planned.
- Password policies apply to local accounts only, not LDAP-backed accounts.
- All contributions require a DCO sign-off.
- Only use actions owned by
owncloud, created by GitHub (actions/*), verified on the GitHub Marketplace, or verified by the ownCloud Maintainers. - Pin all actions to their full commit SHA (not tags):
uses: actions/checkout@<SHA> # vX.Y.Z - Never introduce actions from unverified third parties.
- Dependabot is configured for automated dependency updates.
- Review and merge Dependabot PRs as part of regular maintenance.
- Do not introduce new dependencies without discussion in an issue first.
- Rebase policy: Always rebase; never create merge commits. Use
git pull --rebaseandgit rebasebefore pushing. - Signed commits: All commits must be PGP/GPG signed (
git commit -S -s). - DCO sign-off: Every commit needs a
Signed-off-byline (git commit -s). - Conventional Commits & Squash Merge: Use the Conventional Commits format where the repository enforces it. Many repos use squash merge, where the PR title becomes the commit message on the default branch — apply Conventional Commits format to PR titles as well. A reusable GitHub Actions workflow enforces this.
Configuration is via the Security section of ownCloud admin settings. The app tracks password history via hashed values, enforces expiration policies, and supports notification via email and web. Policies are defined in the lib/ classes.