aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuka Trovic <luka@nextcloud.com>2025-02-27 15:39:06 +0100
committerLuka Trovic <89908051+luka-nextcloud@users.noreply.github.com>2025-04-29 20:07:19 +0200
commit03d11b3980bf1aa5b20ed7eab8f900eb44d40a0e (patch)
treeac9b5234359ca9125b6acd4ca93e23e8dbf0d7c1
parente902fec9a5a2cb40e02db1523c347dc8d0074c1f (diff)
downloadnextcloud-server-03d11b3980bf1aa5b20ed7eab8f900eb44d40a0e.tar.gz
nextcloud-server-03d11b3980bf1aa5b20ed7eab8f900eb44d40a0e.zip
feat(admin_audit): write admin audit log for login failed
Signed-off-by: Luka Trovic <luka@nextcloud.com>
-rw-r--r--apps/admin_audit/lib/Actions/Auth.php11
-rw-r--r--apps/admin_audit/lib/AppInfo/Application.php1
-rw-r--r--lib/private/Authentication/Listeners/LoginFailedListener.php1
3 files changed, 13 insertions, 0 deletions
diff --git a/apps/admin_audit/lib/Actions/Auth.php b/apps/admin_audit/lib/Actions/Auth.php
index 55a87cf170f..c56d2c4b7c4 100644
--- a/apps/admin_audit/lib/Actions/Auth.php
+++ b/apps/admin_audit/lib/Actions/Auth.php
@@ -42,4 +42,15 @@ class Auth extends Action {
[]
);
}
+
+ public function loginFailed(array $params): void {
+ $this->log(
+ 'Login failed: "%s"',
+ $params,
+ [
+ 'uid',
+ ],
+ true
+ );
+ }
}
diff --git a/apps/admin_audit/lib/AppInfo/Application.php b/apps/admin_audit/lib/AppInfo/Application.php
index a95ba0e684a..00494fb0b60 100644
--- a/apps/admin_audit/lib/AppInfo/Application.php
+++ b/apps/admin_audit/lib/AppInfo/Application.php
@@ -145,6 +145,7 @@ class Application extends App implements IBootstrap {
Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
+ Util::connectHook('OC_User', 'login_failed', $authActions, 'loginFailed');
}
private function appHooks(IAuditLogger $logger,
diff --git a/lib/private/Authentication/Listeners/LoginFailedListener.php b/lib/private/Authentication/Listeners/LoginFailedListener.php
index 0358887bb86..ccc93532439 100644
--- a/lib/private/Authentication/Listeners/LoginFailedListener.php
+++ b/lib/private/Authentication/Listeners/LoginFailedListener.php
@@ -40,6 +40,7 @@ class LoginFailedListener implements IEventListener {
$this->dispatcher->dispatchTyped(new AnyLoginFailedEvent($event->getLoginName(), $event->getPassword()));
$uid = $event->getLoginName();
+ \OC_Hook::emit('OC_User', 'login_failed', ['run' => true, 'uid' => $uid]);
Util::emitHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',