Browse Source

Take an EventType in log_public_event to match log_event

Upstream #7656 changed log_event to take an EventType instead of a raw
i32. Do the same for its Public API sibling, so the callers pass the enum
and the cast lives in one place.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
pull/7569/head
Rune Darrud 2 weeks ago
parent
commit
1c7eb92e82
  1. 10
      src/api/core/events.rs
  2. 20
      src/api/core/public.rs

10
src/api/core/events.rs

@ -284,11 +284,17 @@ pub async fn log_event(
/// Log an organization event that was triggered through the Public API.
/// These are performed by an organization API client instead of a user, so there is
/// no acting user or device to record and both are stored as null.
pub async fn log_public_event(event_type: i32, source_uuid: &str, org_id: &OrganizationId, ip: &IpAddr, conn: &DbConn) {
pub async fn log_public_event(
event_type: EventType,
source_uuid: &str,
org_id: &OrganizationId,
ip: &IpAddr,
conn: &DbConn,
) {
if !CONFIG.org_events_enabled() {
return;
}
log_event_impl(event_type, source_uuid, org_id, None, None, None, ip, conn).await;
log_event_impl(event_type as i32, source_uuid, org_id, None, None, None, ip, conn).await;
}
#[expect(clippy::too_many_arguments)]

20
src/api/core/public.rs

@ -750,7 +750,7 @@ async fn post_member(data: Json<MemberCreateData>, token: PublicToken, ip: auth:
err!(format!("Error sending invite: {e:?} "));
}
log_public_event(EventType::OrganizationUserInvited as i32, &new_member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserInvited, &new_member.uuid, &org_id, &ip.ip, &conn).await;
set_member_collections(&new_member, &data.collections, &org_id, &conn).await?;
set_member_groups(&new_member, &data.groups, &conn).await?;
@ -802,7 +802,7 @@ async fn put_member(
member.save(&conn).await?;
log_public_event(EventType::OrganizationUserUpdated as i32, &member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserUpdated, &member.uuid, &org_id, &ip.ip, &conn).await;
Ok(Json(member_to_json(&member, &conn).await))
}
@ -822,7 +822,7 @@ async fn delete_member(
deny_owner_target(&member)?;
log_public_event(EventType::OrganizationUserRemoved as i32, &member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserRemoved, &member.uuid, &org_id, &ip.ip, &conn).await;
if let Some(user) = User::find_by_uuid(&member.user_uuid, &conn).await {
// There is no device behind a Public API request, so no push device to exclude.
@ -860,7 +860,7 @@ async fn put_member_group_ids(
set_member_groups(&member, &data.group_ids, &conn).await?;
log_public_event(EventType::OrganizationUserUpdatedGroups as i32, &member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserUpdatedGroups, &member.uuid, &org_id, &ip.ip, &conn).await;
Ok(())
}
@ -923,7 +923,7 @@ async fn post_member_revoke(
member.revoke();
member.save(&conn).await?;
log_public_event(EventType::OrganizationUserRevoked as i32, &member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserRevoked, &member.uuid, &org_id, &ip.ip, &conn).await;
Ok(())
}
@ -954,7 +954,7 @@ async fn post_member_restore(
OrgPolicy::check_user_allowed(&member, "restore", &conn).await?;
member.save(&conn).await?;
log_public_event(EventType::OrganizationUserRestored as i32, &member.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserRestored, &member.uuid, &org_id, &ip.ip, &conn).await;
Ok(())
}
@ -978,7 +978,7 @@ async fn post_group(
Group::new(org_id.clone(), data.name.clone(), data.access_all.unwrap_or(false), data.external_id.clone());
group.save(&conn).await?;
log_public_event(EventType::GroupCreated as i32, &group.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::GroupCreated, &group.uuid, &org_id, &ip.ip, &conn).await;
set_group_collections(&group, &data.collections, &org_id, &conn).await?;
@ -1019,7 +1019,7 @@ async fn put_group(
// Member assignments are owned by "/public/groups/<group_id>/member-ids" and are
// deliberately left untouched here.
log_public_event(EventType::GroupUpdated as i32, &group.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::GroupUpdated, &group.uuid, &org_id, &ip.ip, &conn).await;
set_group_collections(&group, &data.collections, &org_id, &conn).await?;
@ -1037,7 +1037,7 @@ async fn delete_group(group_id: GroupId, token: PublicToken, ip: auth::ClientIp,
err_code!(format!("Group {group_id} not found in organization"), 404);
};
log_public_event(EventType::GroupDeleted as i32, &group.uuid, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::GroupDeleted, &group.uuid, &org_id, &ip.ip, &conn).await;
group.delete(&org_id, &conn).await
}
@ -1067,7 +1067,7 @@ async fn put_group_member_ids(
let mut user_entry = GroupUser::new(group_id.clone(), member_id.clone());
user_entry.save(&conn).await?;
log_public_event(EventType::OrganizationUserUpdatedGroups as i32, member_id, &org_id, &ip.ip, &conn).await;
log_public_event(EventType::OrganizationUserUpdatedGroups, member_id, &org_id, &ip.ip, &conn).await;
}
Ok(())

Loading…
Cancel
Save