Skip to content

Commit 1211c03

Browse files
Merge pull request #50697 from nextcloud/admin-audit-listen-failed-login
feat(admin_audit): write admin audit log for AnyLoginFailedEvent
2 parents f9c03f7 + 5750d2a commit 1211c03

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

apps/admin_audit/lib/AppInfo/Application.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use OCP\AppFramework\Bootstrap\IBootContext;
3535
use OCP\AppFramework\Bootstrap\IBootstrap;
3636
use OCP\AppFramework\Bootstrap\IRegistrationContext;
37+
use OCP\Authentication\Events\AnyLoginFailedEvent;
3738
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
3839
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
3940
use OCP\Console\ConsoleEvent;
@@ -105,6 +106,7 @@ public function register(IRegistrationContext $context): void {
105106
$context->registerEventListener(UserLoggedInWithCookieEvent::class, AuthEventListener::class);
106107
$context->registerEventListener(UserLoggedInEvent::class, AuthEventListener::class);
107108
$context->registerEventListener(BeforeUserLoggedOutEvent::class, AuthEventListener::class);
109+
$context->registerEventListener(AnyLoginFailedEvent::class, AuthEventListener::class);
108110

109111
// File events
110112
$context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class);

apps/admin_audit/lib/Listener/AuthEventListener.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace OCA\AdminAudit\Listener;
1111

1212
use OCA\AdminAudit\Actions\Action;
13+
use OCP\Authentication\Events\AnyLoginFailedEvent;
1314
use OCP\EventDispatcher\Event;
1415
use OCP\EventDispatcher\IEventListener;
1516
use OCP\User\Events\BeforeUserLoggedInEvent;
@@ -18,7 +19,7 @@
1819
use OCP\User\Events\UserLoggedInWithCookieEvent;
1920

2021
/**
21-
* @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent>
22+
* @template-implements IEventListener<BeforeUserLoggedInEvent|UserLoggedInWithCookieEvent|UserLoggedInEvent|BeforeUserLoggedOutEvent|AnyLoginFailedEvent>
2223
*/
2324
class AuthEventListener extends Action implements IEventListener {
2425
public function handle(Event $event): void {
@@ -28,6 +29,8 @@ public function handle(Event $event): void {
2829
$this->userLoggedIn($event);
2930
} elseif ($event instanceof BeforeUserLoggedOutEvent) {
3031
$this->beforeUserLogout($event);
32+
} elseif ($event instanceof AnyLoginFailedEvent) {
33+
$this->anyLoginFailed($event);
3134
}
3235
}
3336

@@ -64,4 +67,17 @@ private function beforeUserLogout(BeforeUserLoggedOutEvent $event): void {
6467
[]
6568
);
6669
}
70+
71+
private function anyLoginFailed(AnyLoginFailedEvent $event): void {
72+
$this->log(
73+
'Login failed: "%s"',
74+
[
75+
'loginName' => $event->getLoginName()
76+
],
77+
[
78+
'loginName',
79+
],
80+
true
81+
);
82+
}
6783
}

lib/public/Authentication/Events/AnyLoginFailedEvent.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,19 @@ public function __construct(string $loginName, ?string $password) {
3131

3232
/**
3333
* @since 26.0.0
34+
* @deprecated 31.0.0 Use getLoginName() instead
3435
*/
3536
public function geLoginName(): string {
3637
return $this->loginName;
3738
}
3839

40+
/**
41+
* @since 31.0.0
42+
*/
43+
public function getLoginName(): string {
44+
return $this->loginName;
45+
}
46+
3947
/**
4048
* @since 26.0.0
4149
*/

0 commit comments

Comments
 (0)