mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-28 08:14:03 +02:00
parent
31618ce2cf
commit
e357960d1e
@ -105,18 +105,15 @@ class DbBackendForm extends Form
|
|||||||
*/
|
*/
|
||||||
public static function isValidUserBackend(Form $form)
|
public static function isValidUserBackend(Form $form)
|
||||||
{
|
{
|
||||||
try {
|
$backend = new DbUserBackend(ResourceFactory::createResource($form->getResourceConfig()));
|
||||||
$dbUserBackend = new DbUserBackend(ResourceFactory::createResource($form->getResourceConfig()));
|
$result = $backend->inspect();
|
||||||
if ($dbUserBackend->select()->where('is_active', true)->count() < 1) {
|
if ($result->hasError()) {
|
||||||
$form->addError($form->translate('No active users found under the specified database backend'));
|
$form->addError(sprintf($form->translate('Using the specified backend failed: %s'), $result->getError()));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$form->addError(sprintf($form->translate('Using the specified backend failed: %s'), $e->getMessage()));
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
// TODO: display diagnostics in $result->toArray() to the user
|
||||||
|
|
||||||
|
return ! $result->hasError();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,13 +4,15 @@
|
|||||||
namespace Icinga\Authentication\User;
|
namespace Icinga\Authentication\User;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Icinga\Data\Inspectable;
|
||||||
|
use Icinga\Data\Inspection;
|
||||||
use PDO;
|
use PDO;
|
||||||
use Icinga\Data\Filter\Filter;
|
use Icinga\Data\Filter\Filter;
|
||||||
use Icinga\Exception\AuthenticationException;
|
use Icinga\Exception\AuthenticationException;
|
||||||
use Icinga\Repository\DbRepository;
|
use Icinga\Repository\DbRepository;
|
||||||
use Icinga\User;
|
use Icinga\User;
|
||||||
|
|
||||||
class DbUserBackend extends DbRepository implements UserBackendInterface
|
class DbUserBackend extends DbRepository implements UserBackendInterface, Inspectable
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The algorithm to use when hashing passwords
|
* The algorithm to use when hashing passwords
|
||||||
@ -246,4 +248,26 @@ class DbUserBackend extends DbRepository implements UserBackendInterface
|
|||||||
{
|
{
|
||||||
return crypt($password, self::HASH_ALGORITHM . ($salt !== null ? $salt : $this->generateSalt()));
|
return crypt($password, self::HASH_ALGORITHM . ($salt !== null ? $salt : $this->generateSalt()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inspect this object to gain extended information about its health
|
||||||
|
*
|
||||||
|
* @return Inspection The inspection result
|
||||||
|
*/
|
||||||
|
public function inspect()
|
||||||
|
{
|
||||||
|
$insp = new Inspection('Db User Backend');
|
||||||
|
$insp->write($this->ds->inspect());
|
||||||
|
try {
|
||||||
|
$users = $this->select()->where('is_active', true)->count();
|
||||||
|
if ($users > 1) {
|
||||||
|
$insp->write(sprintf('%s active users', $users));
|
||||||
|
} else {
|
||||||
|
return $insp->error('0 active users', $users);
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$insp->error(sprintf('Query failed: %s', $e->getMessage()));
|
||||||
|
}
|
||||||
|
return $insp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user