ensure post registration auth checks do not fail erroneously
This commit is contained in:
parent
3d6aa06577
commit
09f3cf1a7e
|
@ -809,11 +809,8 @@ class Auth(object):
|
||||||
elif threepid:
|
elif threepid:
|
||||||
# If the user does not exist yet, but is signing up with a
|
# If the user does not exist yet, but is signing up with a
|
||||||
# reserved threepid then pass auth check
|
# reserved threepid then pass auth check
|
||||||
for tp in self.hs.config.mau_limits_reserved_threepids:
|
if is_threepid_reserved(threepid):
|
||||||
if (threepid['medium'] == tp['medium']
|
return
|
||||||
and threepid['address'] == tp['address']):
|
|
||||||
return
|
|
||||||
|
|
||||||
# Else if there is no room in the MAU bucket, bail
|
# Else if there is no room in the MAU bucket, bail
|
||||||
current_mau = yield self.store.get_monthly_active_count()
|
current_mau = yield self.store.get_monthly_active_count()
|
||||||
if current_mau >= self.hs.config.max_mau_value:
|
if current_mau >= self.hs.config.max_mau_value:
|
||||||
|
|
|
@ -291,6 +291,10 @@ class RegisterRestServlet(ClientV1RestServlet):
|
||||||
password=password,
|
password=password,
|
||||||
threepid=threepid,
|
threepid=threepid,
|
||||||
)
|
)
|
||||||
|
# Necessary due to auth checks prior to the threepid being
|
||||||
|
# written to the db
|
||||||
|
if self.store.is_threepid_reserved(threepid):
|
||||||
|
self.store.upsert_monthly_active_user(registered_user_id)
|
||||||
|
|
||||||
if session[LoginType.EMAIL_IDENTITY]:
|
if session[LoginType.EMAIL_IDENTITY]:
|
||||||
logger.debug("Binding emails %s to %s" % (
|
logger.debug("Binding emails %s to %s" % (
|
||||||
|
|
|
@ -406,6 +406,10 @@ class RegisterRestServlet(RestServlet):
|
||||||
generate_token=False,
|
generate_token=False,
|
||||||
threepid=threepid,
|
threepid=threepid,
|
||||||
)
|
)
|
||||||
|
# Necessary due to auth checks prior to the threepid being
|
||||||
|
# written to the db
|
||||||
|
if self.store.is_threepid_reserved(threepid):
|
||||||
|
self.store.upsert_monthly_active_user(registered_user_id)
|
||||||
|
|
||||||
# remember that we've now registered that user account, and with
|
# remember that we've now registered that user account, and with
|
||||||
# what user ID (since the user may not have specified)
|
# what user ID (since the user may not have specified)
|
||||||
|
|
|
@ -36,7 +36,6 @@ class MonthlyActiveUsersStore(SQLBaseStore):
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def initialise_reserved_users(self, threepids):
|
def initialise_reserved_users(self, threepids):
|
||||||
# TODO Why can't I do this in init?
|
|
||||||
store = self.hs.get_datastore()
|
store = self.hs.get_datastore()
|
||||||
reserved_user_list = []
|
reserved_user_list = []
|
||||||
|
|
||||||
|
@ -220,3 +219,17 @@ class MonthlyActiveUsersStore(SQLBaseStore):
|
||||||
yield self.upsert_monthly_active_user(user_id)
|
yield self.upsert_monthly_active_user(user_id)
|
||||||
elif now - last_seen_timestamp > LAST_SEEN_GRANULARITY:
|
elif now - last_seen_timestamp > LAST_SEEN_GRANULARITY:
|
||||||
yield self.upsert_monthly_active_user(user_id)
|
yield self.upsert_monthly_active_user(user_id)
|
||||||
|
|
||||||
|
def is_threepid_reserved(self, threepid):
|
||||||
|
"""Check the threepid against the reserved threepid config
|
||||||
|
Args:
|
||||||
|
threepid(dict) - The threepid to test for
|
||||||
|
Returns:
|
||||||
|
boolean Is the threepid undertest reserved_user
|
||||||
|
"""
|
||||||
|
for tp in self.hs.config.mau_limits_reserved_threepids:
|
||||||
|
if (threepid['medium'] == tp['medium']
|
||||||
|
and threepid['address'] == tp['address']):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
Loading…
Reference in New Issue