Emit audit and SCIM log exports as CSV
JSONL was awkward in spreadsheets and SIEM imports. Write tab-separated-friendly CSV with organization name on every row, resolve audit actors to email or API key name, and enrich SCIM rows with profile email and display name when available. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
@@ -387,3 +387,48 @@ WHERE
|
||||
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func (i *Identities) LoadByIDs(
|
||||
ctx context.Context,
|
||||
conn pg.Querier,
|
||||
identityIDs []gid.GID,
|
||||
) error {
|
||||
if len(identityIDs) == 0 {
|
||||
*i = nil
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
q := `
|
||||
SELECT
|
||||
id,
|
||||
email_address,
|
||||
full_name,
|
||||
hashed_password,
|
||||
email_address_verified,
|
||||
saml_subject,
|
||||
locale,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
identities
|
||||
WHERE
|
||||
id = ANY(@identity_ids::text[])
|
||||
`
|
||||
|
||||
args := pgx.StrictNamedArgs{"identity_ids": identityIDs}
|
||||
|
||||
rows, err := conn.Query(ctx, q, args)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot query identities: %w", err)
|
||||
}
|
||||
|
||||
identities, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[Identity])
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot collect identities: %w", err)
|
||||
}
|
||||
|
||||
*i = identities
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user