diff options
author | Hubert Chathi <hubert@uhoreg.ca> | 2018-08-24 11:44:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-24 11:44:26 -0400 |
commit | 83caead95a921b0977164468a52c5c0b6e9eee5a (patch) | |
tree | e87ae6c5d439de1e1dfd7598cab35a14e320ef59 /synapse/storage/registration.py | |
parent | allow session_data to be any JSON instead of just a string (diff) | |
parent | Merge pull request #3755 from matrix-org/erikj/fix_server_notice_tags (diff) | |
download | synapse-83caead95a921b0977164468a52c5c0b6e9eee5a.tar.xz |
Merge branch 'develop' into e2e_backups
Diffstat (limited to 'synapse/storage/registration.py')
-rw-r--r-- | synapse/storage/registration.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py index 07333f777d..26b429e307 100644 --- a/synapse/storage/registration.py +++ b/synapse/storage/registration.py @@ -26,6 +26,11 @@ from synapse.util.caches.descriptors import cached, cachedInlineCallbacks class RegistrationWorkerStore(SQLBaseStore): + def __init__(self, db_conn, hs): + super(RegistrationWorkerStore, self).__init__(db_conn, hs) + + self.config = hs.config + @cached() def get_user_by_id(self, user_id): return self._simple_select_one( @@ -36,12 +41,33 @@ class RegistrationWorkerStore(SQLBaseStore): retcols=[ "name", "password_hash", "is_guest", "consent_version", "consent_server_notice_sent", - "appservice_id", + "appservice_id", "creation_ts", ], allow_none=True, desc="get_user_by_id", ) + @defer.inlineCallbacks + def is_trial_user(self, user_id): + """Checks if user is in the "trial" period, i.e. within the first + N days of registration defined by `mau_trial_days` config + + Args: + user_id (str) + + Returns: + Deferred[bool] + """ + + info = yield self.get_user_by_id(user_id) + if not info: + defer.returnValue(False) + + now = self.clock.time_msec() + trial_duration_ms = self.config.mau_trial_days * 24 * 60 * 60 * 1000 + is_trial = (now - info["creation_ts"] * 1000) < trial_duration_ms + defer.returnValue(is_trial) + @cached() def get_user_by_access_token(self, token): """Get a user from the given access token. |