# User events

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

## User groups

| Event                        | Dispatched by                  | Properties                                                                                         |
| ---------------------------- | ------------------------------ | -------------------------------------------------------------------------------------------------- |
| `BeforeCreateUserGroupEvent` | `UserService::createUserGroup` | \`UserGroupCreateStruct $userGroupCreateStruct`UserGroup $parentGroup`UserGroup                    |
| `CreateUserGroupEvent`       | `UserService::createUserGroup` | ``` UserGroupCreateStruct $userGroupCreateStruct``UserGroup $parentGroup``UserGroup $userGroup ``` |
| `BeforeUpdateUserGroupEvent` | `UserService::updateUserGroup` | \`UserGroup $userGroup`UserGroupUpdateStruct $userGroupUpdateStruct`UserGroup                      |
| `UpdateUserGroupEvent`       | `UserService::updateUserGroup` | ``` UserGroup $userGroup``UserGroupUpdateStruct $userGroupUpdateStruct ```                         |
| `BeforeDeleteUserGroupEvent` | `UserService::deleteUserGroup` | \`UserGroup $userGroup\`\`array                                                                    |
| `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                                               |
| `UpdateUserPasswordEvent`       | `UserService::updateUserPassword` | ``` User $user``string $newPassword``User $updatedUser ```                          |
| `BeforeUpdateUserTokenEvent`    | `UserService::updateUserToken`    | \`User $user`UserTokenUpdateStruct $userTokenUpdateStruct`User                      |
| `UpdateUserTokenEvent`          | `UserService::updateUserToken`    | ``` User $user``UserTokenUpdateStruct $userTokenUpdateStruct``User $updatedUser ``` |
