mirror of
https://github.com/postfixadmin/postfixadmin.git
synced 2024-09-19 19:22:14 +02:00
see: https://github.com/postfixadmin/postfixadmin/issues/390 - support a callable which
allows for password validation against any external service.
This commit is contained in:
parent
06897d2234
commit
4712d83c98
@ -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) {
|
||||
|
32
tests/PasswordValidationCallableTest.php
Normal file
32
tests/PasswordValidationCallableTest.php
Normal 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'));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user