🔒 Let the admin define certain rules for passwords, e.g. a minimum length
Перейти к файлу
dependabot[bot] 08cf1236d0
Merge pull request #703 from nextcloud/dependabot/npm_and_yarn/cross-spawn-7.0.6
2024-11-19 00:25:33 +00:00
.github
.tx
LICENSES
appinfo
css
img
js
l10n
lib
lists
screenshots
src
templates
tests
vendor-bin
.eslintrc.json
.gitattributes
.gitignore
.l10nignore
.php-cs-fixer.dist.php
.scrutinizer.yml
AUTHORS.md
LICENSE
README.md
REUSE.toml
codecov.yml
composer.json
composer.lock
openapi.json
package-lock.json Chore(deps-dev): Bump cross-spawn from 7.0.3 to 7.0.6 2024-11-19 00:23:58 +00:00
package.json
psalm.xml
stylelint.config.cjs
stylelint.config.cjs.license
vite.config.js

README.md

Password policy

REUSE status PHPUnit status

This app enables the the admin to define certain rules for passwords, for example the minimum length of a password.

By default the app enforces a minimum password length of 8 characters and checks every password against the 1.000.000 most common passwords.

Currently the app checks passwords for public link shares and for user passwords if the database backend is used.

Once the app is enabled you find the "Password policy" settings in the admin section:

screenshot of the admin section

Integrate in other apps

Generate passwords

This app is capable of generating passwords according to the configured policy, so to create a password for your app:

$eventDispatcher = \OCP\Server::get(IEventDispatcher::class);
$event = new \OCP\Security\Events\GenerateSecurePasswordEvent();
try {
  $eventDispatcher->dispatchTyped($event);
} catch (\OCP\HintException $e) {
  // ⚠️ The password generation failed, more information is set on the exception
}
$password = $event->getPassword() ?? 'fallback when this app is not enabled';

Validate passwords

You can easily check passwords for your own app by adding following code to your app:

$eventDispatcher = \OCP\Server::get(IEventDispatcher::class);
$password = 'the-password-you-want-to-validate';
$event = new \OCP\Security\Events\ValidatePasswordPolicyEvent($password);
try {
  $eventDispatcher->dispatchTyped($event);
  // ✅ The password is valid;
} catch (\OCP\HintException $e) {
  // ❌ The password is invalid
}