Add log_and_mask_exceptions flag to login()

This commit is contained in:
Denis Glazachev 2020-10-05 00:24:09 +04:00
parent 1eb8ecf050
commit 2fc6a4ea9c
3 changed files with 7 additions and 3 deletions

View File

@ -420,13 +420,17 @@ UUID IAccessStorage::login(
const String & user_name,
const String & password,
const Poco::Net::IPAddress & address,
const ExternalAuthenticators & external_authenticators) const
const ExternalAuthenticators & external_authenticators,
bool log_and_mask_exceptions) const
{
try {
return loginImpl(user_name, password, address, external_authenticators);
}
catch (...)
{
if (!log_and_mask_exceptions)
throw;
tryLogCurrentException(getLogger(), user_name + ": Authentication failed");
throwCannotAuthenticate(user_name);
}

View File

@ -144,7 +144,7 @@ public:
/// Finds an user, check its password and returns the ID of the user.
/// Throws an exception if no such user or password is incorrect.
UUID login(const String & user_name, const String & password, const Poco::Net::IPAddress & address, const ExternalAuthenticators & external_authenticators) const;
UUID login(const String & user_name, const String & password, const Poco::Net::IPAddress & address, const ExternalAuthenticators & external_authenticators, bool log_and_mask_exceptions = true) const;
/// Returns the ID of an user who has logged in (maybe on another node).
/// The function assumes that the password has been already checked somehow, so we can skip checking it now.

View File

@ -409,7 +409,7 @@ UUID MultipleAccessStorage::loginImpl(const String & user_name, const String & p
{
try
{
auto id = storage->login(user_name, password, address, external_authenticators);
auto id = storage->login(user_name, password, address, external_authenticators, false);
std::lock_guard lock{mutex};
ids_cache.set(id, storage);
return id;