allowedToSeeEvent returns no error if the server is allowed to see this event, otherwise it returns an error response which can be sent to the client.
( ctx context.Context, origin gomatrixserverlib.ServerName, rsAPI api.FederationRoomserverAPI, eventID string, )
| 54 | // allowedToSeeEvent returns no error if the server is allowed to see this event, |
| 55 | // otherwise it returns an error response which can be sent to the client. |
| 56 | func allowedToSeeEvent( |
| 57 | ctx context.Context, |
| 58 | origin gomatrixserverlib.ServerName, |
| 59 | rsAPI api.FederationRoomserverAPI, |
| 60 | eventID string, |
| 61 | ) *util.JSONResponse { |
| 62 | var authResponse api.QueryServerAllowedToSeeEventResponse |
| 63 | err := rsAPI.QueryServerAllowedToSeeEvent( |
| 64 | ctx, |
| 65 | &api.QueryServerAllowedToSeeEventRequest{ |
| 66 | EventID: eventID, |
| 67 | ServerName: origin, |
| 68 | }, |
| 69 | &authResponse, |
| 70 | ) |
| 71 | if err != nil { |
| 72 | resErr := util.ErrorResponse(err) |
| 73 | return &resErr |
| 74 | } |
| 75 | |
| 76 | if !authResponse.AllowedToSeeEvent { |
| 77 | resErr := util.MessageResponse(http.StatusForbidden, "server not allowed to see event") |
| 78 | return &resErr |
| 79 | } |
| 80 | |
| 81 | return nil |
| 82 | } |
| 83 | |
| 84 | // fetchEvent fetches the event without auth checks. Returns an error if the event cannot be found. |
| 85 | func fetchEvent(ctx context.Context, rsAPI api.FederationRoomserverAPI, eventID string) (*gomatrixserverlib.Event, *util.JSONResponse) { |
no test coverage detected