Make auth_types_for_event take the ruma types instead of StateEvent
This commit is contained in:
parent
6e0edce35a
commit
d22d83522b
@ -26,19 +26,24 @@ pub enum RedactAllowed {
|
|||||||
No,
|
No,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn auth_types_for_event(event: &StateEvent) -> Vec<(EventType, Option<String>)> {
|
pub fn auth_types_for_event(
|
||||||
if event.kind() == EventType::RoomCreate {
|
kind: EventType,
|
||||||
|
sender: &UserId,
|
||||||
|
state_key: Option<String>,
|
||||||
|
content: serde_json::Value,
|
||||||
|
) -> Vec<(EventType, Option<String>)> {
|
||||||
|
if kind == EventType::RoomCreate {
|
||||||
return vec![];
|
return vec![];
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut auth_types = vec![
|
let mut auth_types = vec![
|
||||||
(EventType::RoomPowerLevels, Some("".to_string())),
|
(EventType::RoomPowerLevels, Some("".to_string())),
|
||||||
(EventType::RoomMember, Some(event.sender().to_string())),
|
(EventType::RoomMember, Some(sender.to_string())),
|
||||||
(EventType::RoomCreate, Some("".to_string())),
|
(EventType::RoomCreate, Some("".to_string())),
|
||||||
];
|
];
|
||||||
|
|
||||||
if event.kind() == EventType::RoomMember {
|
if kind == EventType::RoomMember {
|
||||||
if let Ok(content) = event.deserialize_content::<room::member::MemberEventContent>() {
|
if let Ok(content) = serde_json::from_value::<room::member::MemberEventContent>(content) {
|
||||||
if [MembershipState::Join, MembershipState::Invite].contains(&content.membership) {
|
if [MembershipState::Join, MembershipState::Invite].contains(&content.membership) {
|
||||||
let key = (EventType::RoomJoinRules, Some("".into()));
|
let key = (EventType::RoomJoinRules, Some("".into()));
|
||||||
if !auth_types.contains(&key) {
|
if !auth_types.contains(&key) {
|
||||||
@ -47,7 +52,7 @@ pub fn auth_types_for_event(event: &StateEvent) -> Vec<(EventType, Option<String
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO what when we don't find a state_key
|
// TODO what when we don't find a state_key
|
||||||
let key = (EventType::RoomMember, event.state_key());
|
let key = (EventType::RoomMember, state_key);
|
||||||
if !auth_types.contains(&key) {
|
if !auth_types.contains(&key) {
|
||||||
auth_types.push(key)
|
auth_types.push(key)
|
||||||
}
|
}
|
||||||
|
@ -523,7 +523,12 @@ impl StateResolution {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for key in event_auth::auth_types_for_event(&event) {
|
for key in event_auth::auth_types_for_event(
|
||||||
|
event.kind(),
|
||||||
|
event.sender(),
|
||||||
|
event.state_key(),
|
||||||
|
event.content().clone(),
|
||||||
|
) {
|
||||||
if let Some(ev_id) = resolved_state.get(&key) {
|
if let Some(ev_id) = resolved_state.get(&key) {
|
||||||
if let Some(event) = self._get_event(room_id, ev_id, event_map, store) {
|
if let Some(event) = self._get_event(room_id, ev_id, event_map, store) {
|
||||||
// TODO synapse checks `rejected_reason` is None here
|
// TODO synapse checks `rejected_reason` is None here
|
||||||
|
@ -139,7 +139,12 @@ fn do_check(events: &[StateEvent], edges: Vec<Vec<EventId>>, expected_state_ids:
|
|||||||
state_after.insert((ty, key), event_id.clone());
|
state_after.insert((ty, key), event_id.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
let auth_types = state_res::auth_types_for_event(fake_event);
|
let auth_types = state_res::auth_types_for_event(
|
||||||
|
fake_event.kind(),
|
||||||
|
fake_event.sender(),
|
||||||
|
fake_event.state_key(),
|
||||||
|
fake_event.content().clone(),
|
||||||
|
);
|
||||||
|
|
||||||
let mut auth_events = vec![];
|
let mut auth_events = vec![];
|
||||||
for key in auth_types {
|
for key in auth_types {
|
||||||
|
@ -399,7 +399,12 @@ fn do_check(events: &[StateEvent], edges: Vec<Vec<EventId>>, expected_state_ids:
|
|||||||
state_after.insert((ty, key), event_id.clone());
|
state_after.insert((ty, key), event_id.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
let auth_types = state_res::auth_types_for_event(fake_event);
|
let auth_types = state_res::auth_types_for_event(
|
||||||
|
fake_event.kind(),
|
||||||
|
fake_event.sender(),
|
||||||
|
fake_event.state_key(),
|
||||||
|
fake_event.content().clone(),
|
||||||
|
);
|
||||||
|
|
||||||
let mut auth_events = vec![];
|
let mut auth_events = vec![];
|
||||||
for key in auth_types {
|
for key in auth_types {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user