bug fixes

This commit is contained in:
Neil Johnson 2018-08-03 22:29:03 +01:00
parent e10830e976
commit 886be75ad1
5 changed files with 10 additions and 27 deletions

View File

@ -520,7 +520,7 @@ class AuthHandler(BaseHandler):
""" """
logger.info("Logging in user %s on device %s", user_id, device_id) logger.info("Logging in user %s on device %s", user_id, device_id)
access_token = yield self.issue_access_token(user_id, device_id) access_token = yield self.issue_access_token(user_id, device_id)
yield self._check_mau_limits() yield self.auth.check_auth_blocking()
# the device *should* have been registered before we got here; however, # the device *should* have been registered before we got here; however,
# it's possible we raced against a DELETE operation. The thing we # it's possible we raced against a DELETE operation. The thing we
@ -734,7 +734,7 @@ class AuthHandler(BaseHandler):
@defer.inlineCallbacks @defer.inlineCallbacks
def validate_short_term_login_token_and_get_user_id(self, login_token): def validate_short_term_login_token_and_get_user_id(self, login_token):
yield self._check_mau_limits() yield self.auth.check_auth_blocking()
auth_api = self.hs.get_auth() auth_api = self.hs.get_auth()
user_id = None user_id = None
try: try:
@ -907,17 +907,6 @@ class AuthHandler(BaseHandler):
else: else:
return defer.succeed(False) return defer.succeed(False)
@defer.inlineCallbacks
def _check_mau_limits(self):
"""
Ensure that if mau blocking is enabled that invalid users cannot
log in.
"""
error = AuthError(
403, "Monthly Active User limits exceeded", errcode=Codes.MAU_LIMIT_EXCEEDED
)
yield self.auth.check_auth_blocking(error)
@attr.s @attr.s
class MacaroonGenerator(object): class MacaroonGenerator(object):

View File

@ -540,7 +540,7 @@ class RegistrationHandler(BaseHandler):
Do not accept registrations if monthly active user limits exceeded Do not accept registrations if monthly active user limits exceeded
and limiting is enabled and limiting is enabled
""" """
error = RegistrationError( try:
403, "Monthly Active User limits exceeded", errcode=Codes.MAU_LIMIT_EXCEEDED yield self.auth.check_auth_blocking()
) except AuthError as e:
yield self.auth.check_auth_blocking(error) raise RegistrationError(e.code, e.message, e.errcode)

View File

@ -54,7 +54,7 @@ class MonthlyActiveUsersStore(SQLBaseStore):
""" """
txn.execute(sql, (self.hs.config.max_mau_value,)) txn.execute(sql, (self.hs.config.max_mau_value,))
res = yield self.runInteraction("reap_monthly_active_users", _reap_users) yield self.runInteraction("reap_monthly_active_users", _reap_users)
# It seems poor to invalidate the whole cache, Postgres supports # It seems poor to invalidate the whole cache, Postgres supports
# 'Returning' which would allow me to invalidate only the # 'Returning' which would allow me to invalidate only the
# specific users, but sqlite has no way to do this and instead # specific users, but sqlite has no way to do this and instead
@ -64,7 +64,6 @@ class MonthlyActiveUsersStore(SQLBaseStore):
# something about it if and when the perf becomes significant # something about it if and when the perf becomes significant
self._user_last_seen_monthly_active.invalidate_all() self._user_last_seen_monthly_active.invalidate_all()
self.get_monthly_active_count.invalidate_all() self.get_monthly_active_count.invalidate_all()
return res
@cached(num_args=0) @cached(num_args=0)
def get_monthly_active_count(self): def get_monthly_active_count(self):

View File

@ -452,12 +452,8 @@ class AuthTestCase(unittest.TestCase):
lots_of_users = 100 lots_of_users = 100
small_number_of_users = 1 small_number_of_users = 1
error = AuthError(
403, "MAU Limit Exceeded", errcode=Codes.MAU_LIMIT_EXCEEDED
)
# Ensure no error thrown # Ensure no error thrown
yield self.auth.check_auth_blocking(error) yield self.auth.check_auth_blocking()
self.hs.config.limit_usage_by_mau = True self.hs.config.limit_usage_by_mau = True
@ -466,10 +462,10 @@ class AuthTestCase(unittest.TestCase):
) )
with self.assertRaises(AuthError): with self.assertRaises(AuthError):
yield self.auth.check_auth_blocking(error) yield self.auth.check_auth_blocking()
# Ensure does not throw an error # Ensure does not throw an error
self.store.get_monthly_active_count = Mock( self.store.get_monthly_active_count = Mock(
return_value=defer.succeed(small_number_of_users) return_value=defer.succeed(small_number_of_users)
) )
yield self.auth.check_auth_blocking(error) yield self.auth.check_auth_blocking()

View File

@ -104,7 +104,6 @@ class RegistrationTestCase(unittest.TestCase):
self.store.get_monthly_active_count = Mock( self.store.get_monthly_active_count = Mock(
return_value=defer.succeed(self.lots_of_users) return_value=defer.succeed(self.lots_of_users)
) )
with self.assertRaises(RegistrationError): with self.assertRaises(RegistrationError):
yield self.handler.get_or_create_user("requester", 'b', "display_name") yield self.handler.get_or_create_user("requester", 'b', "display_name")