Include the list of bad room ids in the error

This commit is contained in:
Mark Haines 2015-12-22 15:49:32 +00:00
parent 251aafccca
commit 0ee0138325
2 changed files with 24 additions and 2 deletions

View File

@ -120,6 +120,22 @@ class AuthError(SynapseError):
super(AuthError, self).__init__(*args, **kwargs)
class GuestAccessError(AuthError):
"""An error raised when a there is a problem with a guest user accessing
a room"""
def __init__(self, rooms, *args, **kwargs):
self.rooms = rooms
super(GuestAccessError, self).__init__(*args, **kwargs)
def error_dict(self):
return cs_error(
self.msg,
self.errcode,
rooms=self.rooms,
)
class EventSizeError(SynapseError):
"""An error raised when an event is too big."""

View File

@ -16,7 +16,7 @@
from ._base import BaseHandler
from synapse.api.constants import Membership, EventTypes
from synapse.api.errors import AuthError
from synapse.api.errors import GuestAccessError
from synapse.util import unwrapFirstError
from twisted.internet import defer
@ -139,10 +139,16 @@ class SyncHandler(BaseHandler):
"""
if sync_config.is_guest:
bad_rooms = []
for room_id in sync_config.filter.list_rooms():
world_readable = yield self._is_world_readable(room_id)
if not world_readable:
raise AuthError(403, "Guest access not allowed")
bad_rooms.append(room_id)
if bad_rooms:
raise GuestAccessError(
bad_rooms, 403, "Guest access not allowed"
)
if timeout == 0 or since_token is None or full_state:
# we are going to return immediately, so don't bother calling