Skip to content

Add missing attributes on token audit events

Tan Le requested to merge 333416-add-missing-pat-audit-events-attributes into master

What does this MR do?

Fix missing attributes on token audit events

The bug is caused by the column value being overwritten will nil value in the details hash. The after_validation callback always writes the column value using the details value, regardless whether it has been specified or not.

This change ensures nil check was performed before setting values in both column and detail hash. The column value takes precedence over the details value.

Before

-[ RECORD 1 ]--+------------------------------------------------------------------------------------------
id             | 15
author_id      | 1
entity_id      | 2
entity_type    | Project
details        | ---                                                                                      +
               | :target_details: alice wonderful token                                                   +
               | :action: :custom                                                                         +
               | :custom_message: 'Created project access token with token_id: 8 with scopes: ["read_api",+
               |   "read_repository"]'                                                                    +
               | :ip_address: 127.0.0.1                                                                   +
               | :entity_path: gitlab-org/gitlab-shell                                                    +
               |
ip_address     | 127.0.0.1
author_name    | [NULL]
entity_path    | gitlab-org/gitlab-shell
target_details | alice wonderful token
created_at     | 2021-06-14 11:30:00.745363
target_type    | [NULL]
target_id      | [NULL]

After

-[ RECORD 1 ]--+------------------------------------------------------------------------------------------
id             | 18
author_id      | 1
entity_id      | 2
entity_type    | Project
details        | ---                                                                                      +
               | :target_id: 9                                                                            +
               | :target_type: PersonalAccessToken                                                        +               
               | :target_details: alice amazing token                                                     +
               | :action: :custom                                                                         +
               | :custom_message: 'Created project access token with token_id: 9 with scopes: ["read_api",+
               |   "read_repository"]'                                                                    +
               | :ip_address: 127.0.0.1                                                                   +
               | :entity_path: gitlab-org/gitlab-shell                                                    +
               | :author_name: Harry Potter                                                               +
               |
ip_address     | 127.0.0.1
author_name    | Harry Potter
entity_path    | gitlab-org/gitlab-shell
target_details | alice amazing token
created_at     | 2021-06-14 11:36:02.180232
target_type    | PersonalAccessToken
target_id      | 9

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Related to #333416 (closed)

Edited by Tan Le

Merge request reports