Audit logging -- convert audit logs to use the new schema (#20526)
* Audit logging - new schema added, old schema removed. * fix linter error by running goimports * Address review comments * Address review comments * Example usage of new audit logging API for the updateUserAuth call * fixed unit test on auditing updating user record * Changed the `TestUpdateConfigDiffInAuditRecord` testcase---it failed, because this PR changes how the `meta` field is serialized into the audit log records. * fix linter error * use string constants for record keys * new audit api calls for api4/bot * `Auditable` interface implementations for model classes * New audit calls for channel api * New audit calls for channel_local * renamed receivers for required style reasons * New audit calls for api4/command * renamed receiver * New audit calls for api4/command_local * renamed receiver * fix unit test to reflect changes in the Auditable implementation of the user class * new audit calls for compliance * new audit calls for configs * remove auditRec.addMeta from updateConfig and patchConfig * new audit calls for config_local * new audit calls * new audit calls for ldap, license apis * new audit calls * new audit calls * new audit calls * new audit calls * new audit calls * new audit calls * new audit calls * new audit calls * fix linter error * fixed linter error * fixed "user update" test * Don't include all of config when audit logging config changes. Also fix unit test on TestUpdateConfigDiffInAuditRecord * address review comments * Added Auditable() method for UserPatch * Fix duplicative method declaration from merge * Fix styling and API changes issues introduced with merge * Fix broken test Co-authored-by: Daniel Schalla <daniel@schalla.me>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
4d3bdab14c
Коммит
8f44fbf89c
@@ -105,6 +105,38 @@ type User struct {
|
||||
DisableWelcomeEmail bool `json:"disable_welcome_email"`
|
||||
}
|
||||
|
||||
func (u *User) Auditable() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"id": u.Id,
|
||||
"create_at": u.CreateAt,
|
||||
"update_at": u.UpdateAt,
|
||||
"delete_at": u.DeleteAt,
|
||||
"username": u.Username,
|
||||
"auth_service": u.AuthService,
|
||||
"email": u.Email,
|
||||
"email_verified": u.EmailVerified,
|
||||
"position": u.Position,
|
||||
"roles": u.Roles,
|
||||
"allow_marketing": u.AllowMarketing,
|
||||
"props": u.Props,
|
||||
"notify_props": u.NotifyProps,
|
||||
"last_password_update": u.LastPasswordUpdate,
|
||||
"last_picture_update": u.LastPictureUpdate,
|
||||
"failed_attempts": u.FailedAttempts,
|
||||
"locale": u.Locale,
|
||||
"timezone": u.Timezone,
|
||||
"mfa_active": u.MfaActive,
|
||||
"remote_id": u.RemoteId,
|
||||
"last_activity_at": u.LastActivityAt,
|
||||
"is_bot": u.IsBot,
|
||||
"bot_description": u.BotDescription,
|
||||
"bot_last_icon_update": u.BotLastIconUpdate,
|
||||
"terms_of_service_id": u.TermsOfServiceId,
|
||||
"terms_of_service_create_at": u.TermsOfServiceCreateAt,
|
||||
"disable_welcome_email": u.DisableWelcomeEmail,
|
||||
}
|
||||
}
|
||||
|
||||
//msgp UserMap
|
||||
|
||||
// UserMap is a map from a userId to a user object.
|
||||
@@ -133,6 +165,22 @@ type UserPatch struct {
|
||||
RemoteId *string `json:"remote_id"`
|
||||
}
|
||||
|
||||
func (u *UserPatch) Auditable() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"username": u.Username,
|
||||
"nickname": u.Nickname,
|
||||
"first_name": u.FirstName,
|
||||
"last_name": u.LastName,
|
||||
"position": u.Position,
|
||||
"email": u.Email,
|
||||
"props": u.Props,
|
||||
"notify_props": u.NotifyProps,
|
||||
"locale": u.Locale,
|
||||
"timezone": u.Timezone,
|
||||
"remote_id": u.RemoteId,
|
||||
}
|
||||
}
|
||||
|
||||
//msgp:ignore UserAuth
|
||||
type UserAuth struct {
|
||||
Password string `json:"password,omitempty"` // DEPRECATED: It is not used.
|
||||
@@ -835,13 +883,6 @@ func (u *User) ToPatch() *UserPatch {
|
||||
}
|
||||
}
|
||||
|
||||
func (u *User) Auditable() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"id": u.Id,
|
||||
"username": u.Username,
|
||||
}
|
||||
}
|
||||
|
||||
func (u *UserPatch) SetField(fieldName string, fieldValue string) {
|
||||
switch fieldName {
|
||||
case "FirstName":
|
||||
|
||||
Ссылка в новой задаче
Block a user