diff --git a/modules/Core/classes/Events/UserUpdatedEvent.php b/modules/Core/classes/Events/UserUpdatedEvent.php new file mode 100644 index 0000000000..6e0b72e389 --- /dev/null +++ b/modules/Core/classes/Events/UserUpdatedEvent.php @@ -0,0 +1,30 @@ +user = $user; + + $data = DB::getInstance()->get('users', ['id', $user->data()->id]); + $this->updated_data = new UserData($data->first()); + } + + public static function name(): string { + return 'updatedUser'; + } + + public static function description(): string { + return (new Language())->get('admin', 'user_updated_hook_info'); + } + + public function webhookParams(): array { + return [ + 'user_id' => $this->user->data()->id, + 'username' => $this->user->getDisplayname(), + 'profile_url' => URL::getSelfURL() . ltrim($this->user->getProfileURL(), '/') + ]; + } +} diff --git a/modules/Core/language/en_UK.json b/modules/Core/language/en_UK.json index 946f791a35..ec12b3006e 100644 --- a/modules/Core/language/en_UK.json +++ b/modules/Core/language/en_UK.json @@ -3,6 +3,7 @@ "admin/user_warned_webhook": "{{punished}} has been warned by {{punisher}}.", "admin/user_group_added_hook_info": "User Group Added", "admin/user_group_removed_hook_info": "User Group Removed", + "admin/user_updated_hook_info": "User updated", "admin/acp_logins": "StaffCP Logins", "admin/action": "Action", "admin/action_info": "Action Info", diff --git a/modules/Core/module.php b/modules/Core/module.php index 70b264c910..1dc3ce3ca8 100644 --- a/modules/Core/module.php +++ b/modules/Core/module.php @@ -317,6 +317,7 @@ public function __construct(Language $language, Pages $pages, User $user, Naviga EventHandler::registerEvent(UserProfilePostCreatedEvent::class); EventHandler::registerEvent(UserProfilePostReplyCreatedEvent::class); EventHandler::registerEvent(UserRegisteredEvent::class); + EventHandler::registerEvent(UserUpdatedEvent::class); EventHandler::registerEvent(UserValidatedEvent::class); EventHandler::registerEvent(UserWarnedEvent::class); diff --git a/modules/Core/pages/panel/users_edit.php b/modules/Core/pages/panel/users_edit.php index 107d88172b..4df86623de 100644 --- a/modules/Core/pages/panel/users_edit.php +++ b/modules/Core/pages/panel/users_edit.php @@ -208,6 +208,10 @@ } } + EventHandler::executeEvent(new UserUpdatedEvent( + $view_user, + )); + Session::flash('edit_user_success', $language->get('admin', 'user_updated_successfully')); Redirect::to(URL::build('/panel/users/edit/', 'id=' . urlencode($user_query->id))); } catch (Exception $e) { diff --git a/modules/Core/pages/user/settings.php b/modules/Core/pages/user/settings.php index 9303882499..fdece16072 100644 --- a/modules/Core/pages/user/settings.php +++ b/modules/Core/pages/user/settings.php @@ -80,6 +80,10 @@ // Logout all other sessions for this user $user->logoutAllOtherSessions(); + EventHandler::executeEvent(new UserUpdatedEvent( + $user, + )); + Session::delete('force_tfa_alert'); Session::flash('tfa_success', $language->get('user', 'tfa_successful')); Redirect::to(URL::build('/user/settings')); @@ -125,6 +129,10 @@ 'tfa_complete' => false ]); + EventHandler::executeEvent(new UserUpdatedEvent( + $user, + )); + Session::flash('settings_success', $language->get('user', 'tfa_disabled')); Redirect::to(URL::build('/user/settings')); } @@ -330,6 +338,10 @@ } } + EventHandler::executeEvent(new UserUpdatedEvent( + $user, + )); + Session::flash('settings_success', $language->get('user', 'settings_updated_successfully')); Redirect::to(URL::build('/user/settings'));