# User events

> For the complete documentation index, see [llms.txt](https://doc.ibexa.co/en/5.0/llms.txt).

Events that are triggered when working with users and user groups.

| Event                   | Dispatched by             | Properties                                                               |
| ----------------------- | ------------------------- | ------------------------------------------------------------------------ |
| `BeforeCreateUserEvent` | `UserService::createUser` | `UserCreateStruct $userCreateStruct` `array $parentGroups` `?User $user` |
| `CreateUserEvent`       | `UserService::createUser` | `UserCreateStruct $userCreateStruct` `array $parentGroups` `User $user`  |
| `BeforeUpdateUserEvent` | `UserService::updateUser` | `User $user` `UserUpdateStruct $userUpdateStruct` `?User $updatedUser`   |
| `UpdateUserEvent`       | `UserService::updateUser` | `User $user` `UserUpdateStruct $userUpdateStruct` `User $updatedUser`    |
| `BeforeDeleteUserEvent` | `UserService::deleteUser` | `User $user` `array or null $locations`                                  |
| `DeleteUserEvent`       | `UserService::deleteUser` | `User $user` `array $locations`                                          |

## User groups

| Event                        | Dispatched by                  | Properties                                                                                           |
| ---------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------- |
| `BeforeCreateUserGroupEvent` | `UserService::createUserGroup` | `UserGroupCreateStruct $userGroupCreateStruct` `UserGroup $parentGroup` `?UserGroup $userGroup`      |
| `CreateUserGroupEvent`       | `UserService::createUserGroup` | `UserGroupCreateStruct $userGroupCreateStruct` `UserGroup $parentGroup` `UserGroup $userGroup`       |
| `BeforeUpdateUserGroupEvent` | `UserService::updateUserGroup` | `UserGroup $userGroup` `UserGroupUpdateStruct $userGroupUpdateStruct` `?UserGroup $updatedUserGroup` |
| `UpdateUserGroupEvent`       | `UserService::updateUserGroup` | `UserGroup $userGroup` `UserGroupUpdateStruct $userGroupUpdateStruct`                                |
| `BeforeDeleteUserGroupEvent` | `UserService::deleteUserGroup` | `UserGroup $userGroup` `array or null $locations`                                                    |
| `DeleteUserGroupEvent`       | `UserService::deleteUserGroup` | `UserGroup $userGroup` `array $locations`                                                            |
| `BeforeMoveUserGroupEvent`   | `UserService::moveUserGroup`   | `UserGroup $userGroup` `UserGroup $newParent`                                                        |
| `MoveUserGroupEvent`         | `UserService::moveUserGroup`   | `UserGroup $userGroup` `UserGroup $newParent`                                                        |

## Assigning to user groups

| Event                                  | Dispatched by                            | Properties                          |
| -------------------------------------- | ---------------------------------------- | ----------------------------------- |
| `BeforeAssignUserToUserGroupEvent`     | `UserService::assignUserToUserGroup`     | `User $user` `UserGroup $userGroup` |
| `AssignUserToUserGroupEvent`           | `UserService::assignUserToUserGroup`     | `User $user` `UserGroup $userGroup` |
| `BeforeUnAssignUserFromUserGroupEvent` | `UserService::unAssignUserFromUserGroup` | `User $user` `UserGroup $userGroup` |
| `UnAssignUserFromUserGroupEvent`       | `UserService::unAssignUserFromUserGroup` | `User $user` `UserGroup $userGroup` |

## Updating User data

| Event                           | Dispatched by                     | Properties                                                                       |
| ------------------------------- | --------------------------------- | -------------------------------------------------------------------------------- |
| `BeforeUpdateUserPasswordEvent` | `UserService::updateUserPassword` | `User $user` `string $newPassword` `?User $updatedUser`                          |
| `UpdateUserPasswordEvent`       | `UserService::updateUserPassword` | `User $user` `string $newPassword` `User $updatedUser`                           |
| `BeforeUpdateUserTokenEvent`    | `UserService::updateUserToken`    | `User $user` `UserTokenUpdateStruct $userTokenUpdateStruct` `?User $updatedUser` |
| `UpdateUserTokenEvent`          | `UserService::updateUserToken`    | `User $user` `UserTokenUpdateStruct $userTokenUpdateStruct` `User $updatedUser`  |
