0
0
mirror of https://github.com/postfixadmin/postfixadmin.git synced 2024-09-19 19:22:14 +02:00
allows for password validation against any external service.
This commit is contained in:
David Goodwin 2020-11-09 21:37:47 +00:00
parent 06897d2234
commit 4712d83c98
2 changed files with 40 additions and 0 deletions

View File

@ -878,6 +878,14 @@ function validate_password($password) {
}
foreach ($val_conf as $regex => $message) {
if (is_callable($message)) {
$ret = $message($password);
if (!empty($ret)) {
$result[] = $ret;
}
continue;
}
if (!preg_match($regex, $password)) {
$msgparts = preg_split("/ /", $message, 2);
if (count($msgparts) == 1) {

View File

@ -0,0 +1,32 @@
<?php
class PasswordValidationCallableTEst extends \PHPUnit\Framework\TestCase
{
public function setUp(): void
{
$c = Config::getInstance();
$all = $c->getAll();
$all['password_validation'] = [
function ($pw) {
if ($pw === 'fail') {
return 'test_fail';
}
}
];
unset($all['min_password_length']);
$c->setAll($all);
parent::setUp();
}
public function testBasic()
{
// anything except 'fail' should work.
$this->assertEmpty(validate_password('str'));
$this->assertEquals([], validate_password('1234asdf'));
$this->assertEquals(['test_fail'], validate_password('fail'));
}
}