summary refs log tree commit diff
path: root/synapse/handlers/register.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Correctly mention previous copyright (#16820)Erik Johnston2024-01-231-0/+2
| | | | | During the migration the automated script to update the copyright headers accidentally got rid of some of the existing copyright lines. Reinstate them.
* Update license headersPatrick Cloke2023-11-211-11/+16
|
* Add + as an allowed character for Matrix IDs (MSC4009) (#15911)Patrick Cloke2023-07-111-7/+2
|
* `N + 3`: Read from column `full_user_id` rather than `user_id` of tables ↵Shay2023-06-021-1/+1
| | | | `profiles` and `user_filters` (#15649)
* Implement MSC4009 to widen the allowed Matrix ID grammar (#15536)Patrick Cloke2023-05-051-13/+14
| | | | | Behind a configuration flag this adds + to the list of allowed characters in Matrix IDs. The main feature this enables is using full E.164 phone numbers as Matrix IDs.
* Move Spam Checker callbacks to a dedicated file (#15453)Andrew Morgan2023-04-181-2/+2
|
* Revert pruning of old devices (#15360)Erik Johnston2023-03-311-50/+2
| | | | | | | | | * Revert "Fix registering a device on an account with lots of devices (#15348)" This reverts commit f0d8f66eaaacfa75bed65bc5d0c602fbc5339c85. * Revert "Delete stale non-e2e devices for users, take 3 (#15183)" This reverts commit 78cdb72cd6b0e007c314d9fed9f629dfc5b937a6.
* Fix registering a device on an account with lots of devices (#15348)Erik Johnston2023-03-291-0/+2
| | | Fixes up #15183
* Delete stale non-e2e devices for users, take 3 (#15183)Erik Johnston2023-03-291-2/+48
| | | | | This should help reduce the number of devices e.g. simple bots the repeatedly login rack up. We only delete non-e2e devices as they should be safe to delete, whereas if we delete e2e devices for a user we may accidentally break their ability to receive e2e keys for a message.
* Make cleaning up pushers depend on the device_id instead of the token_id ↵Quentin Gliech2023-03-241-2/+2
| | | | | | | | | | | | | | (#15280) This makes it so that we rely on the `device_id` to delete pushers on logout, instead of relying on the `access_token_id`. This ensures we're not removing pushers on token refresh, and prepares for a world without access token IDs (also known as the OIDC). This actually runs the `set_device_id_for_pushers` background update, which was forgotten in #13831. Note that for backwards compatibility it still deletes pushers based on the `access_token` until the background update finishes.
* Avoid unneeded work if auto-join rooms aren't configured. (#15262)Patrick Cloke2023-03-141-2/+8
| | | | | | It is not necessary to reach out to the database to check some parameters if the auto-join rooms are not configured, or (in some cases) if auto-create rooms is not configured.
* Remove unused `room_alias` field from `/createRoom` response (#15093)David Robertson2023-02-221-2/+2
| | | | | | | | | | | | | | * Change `create_room` return type * Don't return room alias from /createRoom * Update other callsites * Fix up mypy complaints It looks like new_room_user_id is None iff new_room_id is None. It's a shame we haven't expressed this in a way that mypy can understand. * Changelog
* Move `StateFilter` to `synapse.types` (#14668)David Robertson2022-12-121-1/+1
| | | | | * Move `StateFilter` to `synapse.types` * Changelog
* Add a type hint for `get_device_handler()` and fix incorrect types. (#14055)Patrick Cloke2022-11-221-0/+4
| | | | | This was the last untyped handler from the HomeServer object. Since it was being treated as Any (and thus unchecked) it was being used incorrectly in a few places.
* Allow admins to require a manual approval process before new accounts can be ↵Brendan Abolivier2022-09-291-0/+8
| | | | used (using MSC3866) (#13556)
* Support enabling/disabling pushers (from MSC3881) (#13799)Brendan Abolivier2022-09-211-2/+2
| | | Partial implementation of MSC3881
* `synapse.api.auth.Auth` cleanup: make permission-related methods use ↵Quentin Gliech2022-08-221-6/+9
| | | | | | | | | `Requester` instead of the `UserID` (#13024) Part of #13019 This changes all the permission-related methods to rely on the Requester instead of the UserID. This is a first step towards enabling scoped access tokens at some point, since I expect the Requester to have scope-related informations in it. It also changes methods which figure out the user/device/appservice out of the access token to return a Requester instead of something else. This avoids having store-related objects in the methods signatures.
* Decouple `synapse.api.auth_blocking.AuthBlocking` from ↵Quentin Gliech2022-06-141-1/+2
| | | | `synapse.api.auth.Auth`. (#13021)
* Wait for lazy join to complete when getting current state (#12872)Erik Johnston2022-06-011-1/+2
|
* Remove `HomeServer.get_datastore()` (#12031)Richard van der Hoff2022-02-231-1/+1
| | | | | | | The presence of this method was confusing, and mostly present for backwards compatibility. Let's get rid of it. Part of #11733
* Minor typing fixes (#12034)Richard van der Hoff2022-02-211-3/+3
| | | | | | These started failing in https://github.com/matrix-org/synapse/pull/12031... I'm a bit mystified by how they ever worked.
* Add a config flag to inhibit `M_USER_IN_USE` during registration (#11743)Brendan Abolivier2022-01-261-12/+14
| | | | | | | This is mostly motivated by the tchap use case, where usernames are automatically generated from the user's email address (in a way that allows figuring out the email address from the username). Therefore, it's an issue if we respond to requests on /register and /register/available with M_USER_IN_USE, because it can potentially leak email addresses (which include the user's real name and place of work). This commit adds a flag to inhibit the M_USER_IN_USE errors that are raised both by /register/available, and when providing a username early into the registration process. This error will still be raised if the user completes the registration process but the username conflicts. This is particularly useful when using modules (https://github.com/matrix-org/synapse/pull/11790 adds a module callback to set the username of users at registration) or SSO, since they can ensure the username is unique. More context is available in the PR that introduced this behaviour to synapse-dinsic: matrix-org/synapse-dinsic#48 - as well as the issue in the matrix-dinsic repo: matrix-org/matrix-dinsic#476
* Partially revert #11675; prevent attempting to create pushers on workers ↵Andrew Morgan2022-01-201-7/+5
| | | | (#11770)
* Add a flag to the `synapse_review_recent_signups` script to ignore and ↵lukasdenk2022-01-171-5/+7
| | | | filter appservice users. (#11675)
* Save the OIDC session ID (sid) with the device on login (#11482)Quentin Gliech2021-12-061-3/+12
| | | As a step towards allowing back-channel logout for OIDC.
* Support configuring the lifetime of non-refreshable access tokens separately ↵reivilibre2021-12-031-3/+17
| | | | to refreshable access tokens. (#11445)
* Add type annotations to some of the configuration surrounding refresh ↵reivilibre2021-11-291-0/+5
| | | | tokens. (#11428)
* Support expiry of refresh tokens and expiry of the overall session when ↵reivilibre2021-11-261-8/+36
| | | | refresh tokens are in use. (#11425)
* Rename unstable `access_token_lifetime` configuration option to ↵reivilibre2021-11-231-2/+6
| | | | `refreshable_access_token_lifetime` to make it clear it only concerns refreshable access tokens. (#11388)
* Rename `get_refresh_token_for_user_id` to `create_refresh_token_for_user_id` ↵reivilibre2021-11-181-1/+1
| | | | (#11370)
* Rename `get_access_token_for_user_id` method to ↵reivilibre2021-11-171-1/+1
| | | | `create_access_token_for_user_id` (#11369)
* Remove the deprecated BaseHandler. (#11005)Patrick Cloke2021-10-081-5/+4
| | | | | | | | The shared ratelimit function was replaced with a dedicated RequestRatelimiter class (accessible from the HomeServer object). Other properties were copied to each sub-class that inherited from BaseHandler.
* Use direct references for configuration variables (part 7). (#10959)Patrick Cloke2021-10-041-3/+6
|
* Clean-up registration tests (#10945)Patrick Cloke2021-09-301-1/+3
| | | | Uses `override_config` and fixes test_auto_create_auto_join_where_no_consent to properly configure auto-join rooms.
* Use direct references for configuration variables (part 6). (#10916)Patrick Cloke2021-09-291-1/+1
|
* Use direct references for configuration variables (part 5). (#10897)Patrick Cloke2021-09-241-1/+1
|
* Use direct references for some configuration variables (part 3) (#10885)Patrick Cloke2021-09-231-4/+7
| | | | | | | | This avoids the overhead of searching through the various configuration classes by directly referencing the class that the attributes are in. It also improves type hints since mypy can now resolve the types of the configuration variables.
* Always add local users to the user directory (#10796)David Robertson2021-09-211-5/+4
| | | | | | | | | | | | | | | | | | | | | | | It's a simplification, but one that'll help make the user directory logic easier to follow with the other changes upcoming. It's not strictly required for those changes, but this will help simplify the resulting logic that listens for `m.room.member` events and generally make the logic easier to follow. This means the config option `search_all_users` ends up controlling the search query only, and not the data we store. The cost of doing so is an extra row in the `user_directory` and `user_directory_search` tables for each local user which - belongs to no public rooms - belongs to no private rooms of size ≥ 2 I think the cost of this will be marginal (since they'll already have entries in `users` and `profiles` anyway). As a small upside, a homeserver whose directory was built with this change can toggle `search_all_users` without having to rebuild their directory. Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Require type hints in the handlers module. (#10831)Patrick Cloke2021-09-201-1/+1
| | | | | | | Adds missing type hints to methods in the synapse.handlers module and requires all methods to have type hints there. This also removes the unused construct_auth_difference method from the FederationHandler.
* Use direct references for some configuration variables (#10798)Patrick Cloke2021-09-131-4/+4
| | | | Instead of proxying through the magic getter of the RootConfig object. This should be more performant (and is more explicit).
* Add a constant for m.federate. (#10775)Patrick Cloke2021-09-081-2/+8
|
* Correctly initialise the `synapse_user_logins` metric. (#10677)Richard van der Hoff2021-08-241-0/+18
| | | | | Fix a bug where the prometheus metrics for SSO logins wouldn't be initialised until the first user logged in with a given auth provider.
* [pyupgrade] `synapse/` (#10348)Jonathan de Jong2021-07-191-9/+6
| | | | | | | | | This PR is tantamount to running ``` pyupgrade --py36-plus --keep-percent-format `find synapse/ -type f -name "*.py"` ``` Part of #9744
* Add a module type for account validity (#9884)Brendan Abolivier2021-07-161-0/+5
| | | | | This adds an API for third-party plugin modules to implement account validity, so they can provide this feature instead of Synapse. The module implementing the current behaviour for this feature can be found at https://github.com/matrix-org/synapse-email-account-validity. To allow for a smooth transition between the current feature and the new module, hooks have been added to the existing account validity endpoints to allow their behaviours to be overridden by a module.
* MSC2918 Refresh tokens implementation (#9450)Quentin Gliech2021-06-241-6/+46
| | | | | | | | | | This implements refresh tokens, as defined by MSC2918 This MSC has been implemented client side in Hydrogen Web: vector-im/hydrogen-web#235 The basics of the MSC works: requesting refresh tokens on login, having the access tokens expire, and using the refresh token to get a new one. Signed-off-by: Quentin Gliech <quentingliech@gmail.com>
* Improve the reliability of auto-joining remote rooms (#10237)Brendan Abolivier2021-06-231-16/+47
| | | | | | If a room is remote and we don't have a user in it, always try to join it. It might fail if the room is invite-only, but we don't have a user to invite with, so at this point it's the best we can do. Fixes #10233 (at least to some extent)
* Standardise the module interface (#10062)Brendan Abolivier2021-06-181-1/+1
| | | This PR adds a common configuration section for all modules (see docs). These modules are then loaded at startup by the homeserver. Modules register their hooks and web resources using the new `register_[...]_callbacks` and `register_web_resource` methods of the module API.
* Change the format of access tokens away from macaroons (#5588)Richard van der Hoff2021-05-121-3/+1
|
* Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-141-1/+0
| | | | | | | Part of #9744 Removes all redundant `# -*- coding: utf-8 -*-` lines from files, as python 3 automatically reads source code as utf-8 now. `Signed-off-by: Jonathan de Jong <jonathan@automatia.nl>`
* Bugbear: Add Mutable Parameter fixes (#9682)Jonathan de Jong2021-04-081-1/+3
| | | | | | | Part of #9366 Adds in fixes for B006 and B008, both relating to mutable parameter lint errors. Signed-off-by: Jonathan de Jong <jonathan@automatia.nl>
* Make RateLimiter class check for ratelimit overrides (#9711)Erik Johnston2021-03-301-3/+3
| | | | | | | This should fix a class of bug where we forget to check if e.g. the appservice shouldn't be ratelimited. We also check the `ratelimit_override` table to check if the user has ratelimiting disabled. That table is really only meant to override the event sender ratelimiting, so we don't use any values from it (as they might not make sense for different rate limits), but we do infer that if ratelimiting is disabled for the user we should disabled all ratelimits. Fixes #9663
* Import HomeServer from the proper module. (#9665)Patrick Cloke2021-03-231-1/+1
|
* Add type hints to the room member handler. (#9631)Patrick Cloke2021-03-171-2/+2
|
* Pass SSO IdP information to spam checker's registration function (#9626)Andrew Morgan2021-03-161-2/+2
| | | | | | | Fixes https://github.com/matrix-org/synapse/issues/9572 When a SSO user logs in for the first time, we create a local Matrix user for them. This goes through the register_user flow, which ends up triggering the spam checker. Spam checker modules don't currently have any way to differentiate between a user trying to sign up initially, versus an SSO user (whom has presumably already been approved elsewhere) trying to log in for the first time. This PR passes `auth_provider_id` as an argument to the `check_registration_for_spam` function. This argument will contain an ID of an SSO provider (`"saml"`, `"cas"`, etc.) if one was used, else `None`.
* Fix the auth provider on the logins metric (#9573)Richard van der Hoff2021-03-101-16/+30
| | | | | We either need to pass the auth provider over the replication api, or make sure we report the auth provider on the worker that received the request. I've gone with the latter.
* Prometheus metrics for logins and registrations (#9511)Richard van der Hoff2021-03-041-2/+33
| | | Add prom metrics for number of users successfully registering and logging in, by SSO provider.
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-161-8/+20
| | | | | | | - Update black version to the latest - Run black auto formatting over the codebase - Run autoformatting according to [`docs/code_style.md `](https://github.com/matrix-org/synapse/blob/80d6dc9783aa80886a133756028984dbf8920168/docs/code_style.md) - Update `code_style.md` docs around installing black to use the correct version
* Collect terms consent from the user during SSO registration (#9276)Richard van der Hoff2021-02-011-0/+2
|
* Make importing display name and email optional (#9277)Richard van der Hoff2021-02-011-2/+3
|
* Merge remote-tracking branch 'origin/erikj/as_mau_block' into developErik Johnston2020-12-181-1/+6
|\
| * Correctly handle AS registerations and add testErik Johnston2020-12-171-1/+6
| |
* | Allow spam-checker modules to be provide async methods. (#8890)David Teller2020-12-111-1/+1
|/ | | | Spam checker modules can now provide async methods. This is implemented in a backwards-compatible manner.
* Properly report user-agent/IP during registration of SSO users. (#8784)Patrick Cloke2020-11-231-99/+115
| | | | | This also expands type-hints to the SSO and registration code. Refactors the CAS code to more closely match OIDC/SAML.
* Add admin API for logging in as a user (#8617)Erik Johnston2020-11-171-10/+14
|
* Add ability for access tokens to belong to one user but grant access to ↵Erik Johnston2020-10-291-2/+5
| | | | | | | | | | another user. (#8616) We do it this way round so that only the "owner" can delete the access token (i.e. `/logout/all` by the "owner" also deletes that token, but `/logout/all` by the "target user" doesn't). A future PR will add an API for creating such a token. When the target user and authenticated entity are different the `Processed request` log line will be logged with a: `{@admin:server as @bob:server} ...`. I'm not convinced by that format (especially since it adds spaces in there, making it harder to use `cut -d ' '` to chop off the start of log lines). Suggestions welcome.
* Remove the deprecated Handlers object (#8494)Patrick Cloke2020-10-091-1/+1
| | | All handlers now available via get_*_handler() methods on the HomeServer.
* Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-181-1/+1
| | | | | | | This converts calls like super(Foo, self) -> super(). Generated with: sed -i "" -Ee 's/super\([^\(]+\)/super()/g' **/*.py
* Allow denying or shadow banning registrations via the spam checker (#8034)Patrick Cloke2020-08-201-2/+24
|
* Improve the error code when trying to register using a name reserved for ↵Patrick Cloke2020-08-201-1/+3
| | | | guests. (#8135)
* Add a shadow-banned flag to users. (#8092)Patrick Cloke2020-08-141-0/+8
|
* Convert replication code to async/await. (#7987)Patrick Cloke2020-08-031-1/+1
|
* Use a postgres sequence to generate guest user IDsRichard van der Hoff2020-07-161-21/+1
|
* Additional configuration options for auto-join rooms (#7763)Patrick Cloke2020-06-301-62/+168
|
* Convert the registration handler to async/await. (#7649)Patrick Cloke2020-06-081-66/+41
|
* Convert user directory handler and related classes to async/await. (#7640)Patrick Cloke2020-06-051-2/+4
|
* Add an option to disable autojoin for guest accounts (#6637)Travis Ralston2020-06-051-1/+7
| | | | Fixes https://github.com/matrix-org/synapse/issues/3177
* Allow new users to be registered via the admin API even if the monthly ↵Dirk Klimpel2020-06-051-1/+6
| | | | active user limit has been reached (#7263)
* Performance improvements and refactor of Ratelimiter (#7595)Andrew Morgan2020-06-051-8/+1
| | | | | | | | | | While working on https://github.com/matrix-org/synapse/issues/5665 I found myself digging into the `Ratelimiter` class and seeing that it was both: * Rather undocumented, and * causing a *lot* of config checks This PR attempts to refactor and comment the `Ratelimiter` class, as well as encourage config file accesses to only be done at instantiation. Best to be reviewed commit-by-commit.
* Check if the localpart is reserved for guests earlier in the registration ↵Brendan Abolivier2020-06-031-9/+9
| | | | | flow (#7625) This is so the user is warned about the username not being valid as soon as possible, rather than only once they've finished UIA.
* Hash passwords earlier in the registration process (#7523)Patrick Cloke2020-05-181-7/+2
|
* async/await is_server_admin (#7363)Andrew Morgan2020-05-011-27/+22
|
* Convert auth handler to async/await (#7261)Patrick Cloke2020-04-151-7/+21
|
* Kill off RegistrationError (#6691)Richard van der Hoff2020-01-131-9/+3
| | | This is pretty pointless. Let's just use SynapseError.
* Don't assign numeric IDs for empty usernames (#6690)Richard van der Hoff2020-01-131-1/+1
| | | | Fix a bug where we would assign a numeric userid if somebody tried registering with an empty username
* Issue #6406 Fix parameter mismatchSyam G Krishnan2019-12-041-1/+1
| | | | Signed-off-by: Syam G Krishnan <syamgk01@gmail.com>
* Replace instance variations of homeserver with correct case/spacingAndrew Morgan2019-11-121-1/+1
|
* raise exception after multiple failuresAndrew Morgan2019-11-061-3/+10
|
* Address review commentsAndrew Morgan2019-11-061-12/+12
|
* Don't forget to ratelimit calls outside of RegistrationHandlerAndrew Morgan2019-11-061-2/+2
|
* Numeric ID checker now checks @0, don't ratelimit on checkingAndrew Morgan2019-11-061-16/+25
|
* Update black to 19.10b0 (#6304)Amber Brown2019-11-011-2/+2
| | | * update version of black and also fix the mypy config being overridden
* Remove unused variableErik Johnston2019-10-031-2/+0
|
* Don't regenerate numeric user ID if registration fails.Erik Johnston2019-10-031-4/+4
| | | | | This causes huge amounts of DB IO if registrations start to fail e.g. because the DB is struggling with IO.
* Only count real users when checking for auto-creation of auto-join roomJason Robinson2019-09-091-8/+4
| | | | | | | | | | | | Previously if the first registered user was a "support" or "bot" user, when the first real user registers, the auto-join rooms were not created. Fix to exclude non-real (ie users with a special user type) users when counting how many users there are to determine whether we should auto-create a room. Signed-off-by: Jason Robinson <jasonr@matrix.org>
* Remove bind_email and bind_msisdn (#5964)Andrew Morgan2019-09-041-44/+6
| | | Removes the `bind_email` and `bind_msisdn` parameters from the `/register` C/S API endpoint as per [MSC2140: Terms of Service for ISes and IMs](https://github.com/matrix-org/matrix-doc/pull/2140/files#diff-c03a26de5ac40fb532de19cb7fc2aaf7R107).
* Fix docstringAndrew Morgan2019-09-031-2/+1
|
* Remove unnecessary variable declarationAndrew Morgan2019-09-031-1/+0
|
* Remove unused methods from c/s api v1 in register.py (#5963)Andrew Morgan2019-09-021-104/+0
| | | These methods were part of the v1 C/S API. Remove them as they are no longer used by any code paths.
* Remove unnecessary parentheses around return statements (#5931)Andrew Morgan2019-08-301-1/+1
| | | | | Python will return a tuple whether there are parentheses around the returned values or not. I'm just sick of my editor complaining about this all over the place :)
* Revert "Add "require_consent" parameter for registration"Brendan Abolivier2019-08-221-12/+2
| | | | This reverts commit 3320aaab3a9bba3f5872371aba7053b41af9d0a0.
* Add "require_consent" parameter for registrationHalf-Shot2019-08-221-2/+12
|
* Replace returnValue with return (#5736)Amber Brown2019-07-231-8/+8
|
* Implement access token expiry (#5660)Richard van der Hoff2019-07-121-11/+24
| | | | Record how long an access token is valid for, and raise a soft-logout once it expires.
* Remove access-token support from RegistrationStore.register (#5642)Richard van der Hoff2019-07-101-1/+1
| | | | | The 'token' param is no longer used anywhere except the tests, so let's kill that off too.
* Remove access-token support from RegistrationHandler.register (#5641)Richard van der Hoff2019-07-081-24/+3
| | | | | | | | Nothing uses this now, so we can remove the dead code, and clean up the API. Since we're changing the shape of the return value anyway, we take the opportunity to give the method a better name.
* Better logging for auto-join. (#5643)Richard van der Hoff2019-07-081-0/+7
| | | It was pretty unclear what was going on, so I've added a couple of log lines.
* Move get_or_create_user to test code (#5628)Richard van der Hoff2019-07-081-51/+0
| | | This is only used in tests, so...
* Remove support for invite_3pid_guest. (#5625)Richard van der Hoff2019-07-051-30/+0
| | | | | | | | | This has never been documented, and I'm not sure it's ever been used outside sytest. It's quite a lot of poorly-maintained code, so I'd like to get rid of it. For now I haven't removed the database table; I suggest we leave that for a future clearout.
* Run Black. (#5482)Amber Brown2019-06-201-123/+101
|
* Limit displaynames and avatar URLsRichard van der Hoff2019-06-011-0/+2
| | | | | | These end up in join events everywhere, so let's limit them. Fixes #5079
* Limit UserIds to a length that fits in a state key (#5198)ReidAnderson2019-05-201-1/+10
|
* Allow password providers to bind emails (#4947)Andrew Morgan2019-03-281-0/+17
| | | This PR allows password provider modules to bind email addresses when a user is registering and is motivated by matrix-org/matrix-synapse-ldap3#58
* Support 3PID login in password providers (#4931)Andrew Morgan2019-03-261-5/+5
| | | | | Adds a new method, check_3pid_auth, which gives password providers the chance to allow authentication with third-party identifiers such as email or msisdn.
* fix test_auto_create_auto_join_where_no_consent (#4886)Neil Johnson2019-03-191-0/+5
|
* Add ratelimiting on login (#4821)Brendan Abolivier2019-03-151-2/+2
| | | Add two ratelimiters on login (per-IP address and per-userID).
* Make registration ratelimiter separate from the main events oneBrendan Abolivier2019-03-061-1/+1
|
* Revert "Split ratelimiters in two (one for events, one for registration)"Brendan Abolivier2019-03-061-1/+1
| | | | This reverts commit d7dbad3526136cfc9fdbd568635be5016fb637db.
* Split ratelimiters in two (one for events, one for registration)Brendan Abolivier2019-03-051-1/+1
|
* Add rate-limiting on registration (#4735)Brendan Abolivier2019-03-051-8/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Rate-limiting for registration * Add unit test for registration rate limiting * Add config parameters for rate limiting on auth endpoints * Doc * Fix doc of rate limiting function Co-Authored-By: babolivier <contact@brendanabolivier.com> * Incorporate review * Fix config parsing * Fix linting errors * Set default config for auth rate limiting * Fix tests * Add changelog * Advance reactor instead of mocked clock * Move parameters to registration specific config and give them more sensible default values * Remove unused config options * Don't mock the rate limiter un MAU tests * Rename _register_with_store into register_with_store * Make CI happy * Remove unused import * Update sample config * Fix ratelimiting test for py2 * Add non-guest test
* switch from google.com to recaptcha.net for reCAPTCHA (#4731)Matthew Hodgson2019-02-251-2/+2
| | | | | | | | * add trivial clarification about jemalloc * switch from google.com to recaptcha.net because https://developers.google.com/recaptcha/docs/faq#can-i-use-recaptcha-globally
* Fix registration on workers (#4682)Erik Johnston2019-02-201-5/+195
| | | | | | | | | | * Move RegistrationHandler init to HomeServer * Move post registration actions to RegistrationHandler * Add post regisration replication endpoint * Newsfile
* Move register_device into handlerErik Johnston2019-02-181-4/+47
|
* Split out registration to workerErik Johnston2019-02-181-4/+59
| | | | | | | | This allows registration to be handled by a worker, though the actual write to the database still happens on master. Note: due to the in-memory session map all registration requests must be handled by the same worker.
* create support user (#4141)Neil Johnson2018-12-141-2/+13
| | | | | | Allow for the creation of a support user. A support user can access the server, join rooms, interact with other users, but does not appear in the user directory nor does it contribute to monthly active user limits.
* Initialise user displayname from SAML2 data (#4272)Richard van der Hoff2018-12-071-7/+16
| | | | | When we register a new user from SAML2 data, initialise their displayname correctly.
* Rip out half-implemented m.login.saml2 support (#4265)Richard van der Hoff2018-12-061-29/+0
| | | | | | | | | | | | | * Rip out half-implemented m.login.saml2 support This was implemented in an odd way that left most of the work to the client, in a way that I really didn't understand. It's going to be a pain to maintain, so let's start by ripping it out. * drop undocumented dependency on dateutil It turns out we were relying on dateutil being pulled in transitively by pysaml2. There's no need for that bloat.
* Neilj/fix autojoin (#4223)Neil Johnson2018-11-281-2/+21
| | | | | | * Fix auto join failures for servers that require user consent * Fix auto join failures for servers that require user consent
* Delete the disused & unspecced identicon functionality (#4106)Amber Brown2018-10-291-3/+0
|
* Make room_member_handler a member of RoomCreationHandlerRichard van der Hoff2018-10-251-2/+4
| | | | ... to save passing it into `_send_events_for_new_room`
* remove trailing whiter spaceNeil Johnson2018-10-241-1/+1
|
* fix tupleRichard van der Hoff2018-10-241-1/+2
| | | Co-Authored-By: neilisfragile <neil@matrix.org>
* remove errant exception and styleNeil Johnson2018-10-231-5/+5
|
* clean up config error logic and importsNeil Johnson2018-10-171-14/+16
|
* no need to join room if creatorNeil Johnson2018-10-131-1/+2
|
* improve auto room join logic, comments and testsNeil Johnson2018-10-121-3/+8
|
* move logic into register, fix room alias localpart bug, testsNeil Johnson2018-10-041-27/+18
|
* emit room aliases eventMatthew Hodgson2018-09-291-3/+8
|
* fix thinkosMatthew Hodgson2018-09-291-6/+6
|
* fix UTsMatthew Hodgson2018-09-281-4/+9
|
* untested stab at autocreating autojoin roomsMatthew Hodgson2018-09-281-0/+18
|
* don't ratelimit autojoinsMatthew Hodgson2018-09-151-0/+1
|
* fix bug where preserved threepid user comes to sign up and server is mau blockedNeil Johnson2018-08-311-1/+2
|
* remove blank lineNeil Johnson2018-08-141-1/+0
|
* Update register.pyNeil Johnson2018-08-141-10/+0
| | | remove comments
* support admin_email config and pass through into blocking errors, return ↵Neil Johnson2018-08-131-13/+14
| | | | AuthError in all cases
* Revert "support admin_email config and pass through into blocking errors, ↵Neil Johnson2018-08-131-14/+13
| | | | | | return AuthError in all cases" This reverts commit 0d43f991a19840a224d3dac78d79f13d78212ee6.
* support admin_email config and pass through into blocking errors, return ↵Neil Johnson2018-08-131-13/+14
| | | | AuthError in all cases
* Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678)Amber Brown2018-08-101-1/+1
|
* py3 fixNeil Johnson2018-08-031-1/+1
|
* bug fixesNeil Johnson2018-08-031-4/+4
|
* do mau checks based on monthly_active_users tableNeil Johnson2018-08-021-6/+4
|
* Merge pull request #3630 from matrix-org/neilj/mau_sign_in_log_in_limitsNeil Johnson2018-08-011-2/+17
|\ | | | | Initial impl of capping MAU
| * make count_monthly_users async synapse/handlers/auth.pyNeil Johnson2018-08-011-4/+5
| |
| * limit register and sign in on number of monthly usersNeil Johnson2018-07-301-2/+16
| |
* | Python 3: Convert some unicode/bytes uses (#3569)Amber Brown2018-08-021-1/+1
|/
* run isortAmber Brown2018-07-091-3/+8
|
* Remove run_on_reactor (#3395)Amber Brown2018-06-141-4/+1
|
* Infrastructure for a server notices roomRichard van der Hoff2018-05-171-0/+14
| | | | | | | Server Notices use a special room which the user can't dismiss. They are created on demand when some other bit of the code calls send_notice. (This doesn't actually do much yet becuse we don't call send_notice anywhere)
* Merge branch 'develop' of into allow_auto_join_roomsKrombel2018-03-281-4/+10
|\
| * Also do check inside linearizerErik Johnston2018-03-271-3/+4
| |
| * PEP8Erik Johnston2018-03-261-1/+3
| |
| * Linearize calls to _generate_user_idErik Johnston2018-03-261-4/+7
| |
* | move handling of auto_join_rooms to RegisterHandlerKrombel2018-03-141-2/+34
|/ | | | | | | | | | | | | Currently the handling of auto_join_rooms only works when a user registers itself via public register api. Registrations via registration_shared_secret and ModuleApi do not work This auto_joins the users in the registration handler which enables the auto join feature for all 3 registration paths. This is related to issue #2725 Signed-Off-by: Matthias Kesler <krombel@krombel.de>
* Refactor get_or_register_3pid_guestErik Johnston2018-03-131-4/+22
|
* rewrite based on PR feedback:Matthew Hodgson2018-01-191-10/+5
| | | | | | | | | * [ ] split config options into allowed_local_3pids and registrations_require_3pid * [ ] simplify and comment logic for picking registration flows * [ ] fix docstring and move check_3pid_allowed into a new util module * [ ] use check_3pid_allowed everywhere @erikjohnston PTAL
* fix up v1, and improve errorsMatthew Hodgson2018-01-191-1/+12
|
* Merge pull request #2773 from matrix-org/erikj/hash_bgErik Johnston2018-01-101-1/+1
|\ | | | | Do bcrypt hashing in a background thread
| * Do bcrypt hashing in a background threadErik Johnston2018-01-101-1/+1
| |
* | switch to a simpler 'search_all_users' button as per review feedbackMatthew Hodgson2017-12-041-1/+1
| |
* | kick the user_directory index when new users registerMatthew Hodgson2017-11-291-0/+8
|/
* Revert "Allow upper-case characters in mxids"Richard van der Hoff2017-11-091-3/+3
| | | | This reverts commit b70b64690330c25cbd04c1b2cacf8276b566efc8.
* Allow upper-case characters in mxidsRichard van der Hoff2017-11-091-3/+3
| | | | Because we're never going to be able to fix this :'(
* Move access token deletion into auth handlerRichard van der Hoff2017-11-011-1/+2
| | | | | | | Also move duplicated deactivation code into the auth handler. I want to add some hooks when we deactivate an access token, so let's bring it all in here so that there's somewhere to put it.
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-1/+1
| | | | what could possibly go wrong
* Allow = in mxids and groupidsRichard van der Hoff2017-10-201-3/+2
| | | | ... because the spec says we should.
* Disallow capital letters in useridsRichard van der Hoff2017-10-201-6/+4
| | | | | Factor out a common function for checking user ids and group ids, which forbids capitals.
* Split out profile handler to fix testsErik Johnston2017-08-251-2/+2
|
* Modify condition on empty localpartLuke Barnard2017-05-101-1/+1
|
* Modify register/available to be GET with query paramLuke Barnard2017-05-101-0/+7
| | | | | | | - GET is now the method for register/available - a query parameter "username" is now used Also, empty usernames are now handled with an error message on registration or via register/available: `User ID cannot be empty`
* Fix email push in pusher workerErik Johnston2017-02-021-4/+6
| | | | | | This was broken when device list updates were implemented, as Mailer could no longer instantiate an AuthHandler due to a dependency on federation sending.
* Prevent user tokens being used as guest tokens (#1675)Richard van der Hoff2016-12-061-1/+1
| | | | | Make sure that a user cannot pretend to be a guest by adding 'guest = True' caveats.
* Stop putting a time caveat on access tokensRichard van der Hoff2016-11-291-3/+2
| | | | | | | | The 'time' caveat on the access tokens was something of a lie, since we weren't enforcing it; more pertinently its presence stops us ever adding useful time caveats. Let's move in the right direction by not lying in our caveats.
* rest/client/v1/register: use the correct requester in createUserPatrik Oldsberg2016-10-061-4/+2
| | | | Signed-off-by: Patrik Oldsberg <patrik.oldsberg@ericsson.com>
* storage/appservice: make appservice methods only relying on the cache ↵Patrik Oldsberg2016-10-061-3/+2
| | | | synchronous
* Forbid non-ASes from registering users whose names begin with '_' (SYN-738)Paul "LeoNerd" Evans2016-07-271-0/+7
|
* Add `create_requester` functionRichard van der Hoff2016-07-261-7/+9
| | | | | Wrap the `Requester` constructor with a function which provides sensible defaults, and use it throughout
* Further registration refactoringRichard van der Hoff2016-07-191-5/+8
| | | | | | | | | | | | | | * `RegistrationHandler.appservice_register` no longer issues an access token: instead it is left for the caller to do it. (There are two of these, one in `synapse/rest/client/v1/register.py`, which now simply calls `AuthHandler.issue_access_token`, and the other in `synapse/rest/client/v2_alpha/register.py`, which is covered below). * In `synapse/rest/client/v2_alpha/register.py`, move the generation of access_tokens into `_create_registration_details`. This means that the normal flow no longer needs to call `AuthHandler.issue_access_token`; the shared-secret flow can tell `RegistrationHandler.register` not to generate a token; and the appservice flow continues to work despite the above change.
* Bug fix: expire invalid access tokensNegar Fazeli2016-07-131-3/+3
|
* Add an admin option to shared secret registrationErik Johnston2016-07-051-1/+3
|
* Fix style violationsKent Shikama2016-07-041-1/+2
| | | | Signed-off-by: Kent Shikama <kent@kentshikama.com>
* Optionally include password hash in createUser endpointKent Shikama2016-07-031-2/+2
| | | | Signed-off-by: Kent Shikama <kent@kentshikama.com>
* Add a comment on why we don't create a profile for upgrading usersMark Haines2016-06-171-0/+1
|
* Remove registered_users from the distributor.Mark Haines2016-06-171-13/+10
| | | | | | | | | | The only place that was observed was to set the profile. I've made it so that the profile is set within store.register in the same transaction that creates the user. This required some slight changes to the registration code for upgrading guest users, since it previously relied on the distributor swallowing errors if the profile already existed.
* Fix a bug caused by a change in auth_handler functionNegar Fazeli2016-06-081-2/+2
| | | | Fix the relevant unit test cases
* Split out the auth handlerDavid Baker2016-06-021-1/+1
|
* Fix set profile error with Requester.Negi Fazeli2016-05-231-4/+5
| | | | | Replace flush_user with delete access token due to function removal Add a new test case for if the user is already registered
* Create user with expiryNegi Fazeli2016-05-131-0/+53
| | | | | | - Add unittests for client, api and handler Signed-off-by: Negar Fazeli <negar.fazeli@ericsson.com>
* Move all the wrapper functions for distributor.fireMark Haines2016-04-081-4/+1
| | | | | | | Move the functions inside the distributor and import them where needed. This reduces duplication and makes it possible for flake8 to detect when the functions aren't used in a given file.
* Make registration idempotent, part 2: be idempotent if the client specifies ↵David Baker2016-03-161-1/+11
| | | | a username.
* Store appservice ID on registerDaniel Wagner-Hall2016-03-101-1/+4
|
* Use syntax that works on both py2.7 and py3Mark Haines2016-03-071-1/+1
|
* handlers/register: make sure another user id is generated when a collision ↵Patrik Oldsberg2016-02-291-0/+1
| | | | | | occurs Signed-off-by: Patrik Oldsberg <patrik.oldsberg@ericsson.com>
* Generate guest access token on 3pid invitesDaniel Wagner-Hall2016-02-241-0/+15
| | | | | | | | | This means that following the same link across multiple sessions or devices can re-use the same guest account. Note that this is somewhat of an abuse vector; we can't throw up captchas on this flow, so this is a way of registering ephemeral accounts for spam, whose sign-up we don't rate limit.
* Enforce user_id exclusivity for AS registrationsDaniel Wagner-Hall2016-02-111-5/+12
| | | | | This whole set of checks is kind of an ugly mess, which I may clean up at some point, but for now let's be correct.
* Fix up logcontextsErik Johnston2016-02-081-1/+1
|
* Allocate guest user IDs numericcallyDaniel Wagner-Hall2016-02-051-19/+36
| | | | | | | | | The current random IDs are ugly and confusing when presented in UIs. This makes them prettier and easier to read. Also, disable non-automated registration of numeric IDs so that we don't need to worry so much about people carving out our automated address space and us needing to keep retrying ID registration.
* Fix flake8 warnings for new flake8Daniel Wagner-Hall2016-02-021-1/+1
|
* Pass make_guest whne we autogen a user IDDavid Baker2016-02-021-1/+3
|
* Underscores are allowed in user idsErik Johnston2016-01-221-1/+1
|
* Don't explode when given a unicode username in /register/Erik Johnston2016-01-201-3/+2
|
* M_INVALID_USERNAME to be consistent with the parameter nameDavid Baker2016-01-151-1/+1
|
* Add specific error code for invalid user names.David Baker2016-01-141-1/+2
|
* comma styleDavid Baker2016-01-061-1/+1
|
* Add is_guest flag to users db to track whether a user is a guest user or ↵David Baker2016-01-061-1/+3
| | | | not. Use this so we can run _filter_events_for_client when calculating event_push_actions.
* Allow guests to upgrade their accountsDaniel Wagner-Hall2016-01-051-10/+27
|
* Merge pull request #450 from matrix-org/matthew/no-identiconsMatthew Hodgson2015-12-181-19/+3
|\ | | | | Matthew/no identicons
| * fix indentation levelMatthew Hodgson2015-12-171-3/+3
| |
| * stop generating default identicons. reverts most of ↵Matthew Hodgson2015-12-171-19/+3
| | | | | | | | 582019f870adbc4a8a8a9ef97b527e0fead77761 and solves vector-web/vector-im#346
* | Fix typo that broke registration on the mobile clientsDavid Baker2015-12-181-1/+1
|/
* Reuse the captcha client rather than creating a new one for each requestMark Haines2015-12-031-4/+2
|
* Wrap calls to distributor.fire in appropriately named functions so that ↵Mark Haines2015-12-011-4/+8
| | | | static analysis can work out want is calling what
* Allow guests to register and call /events?room_id=Daniel Wagner-Hall2015-11-041-5/+7
| | | | | | | This follows the same flows-based flow as regular registration, but as the only implemented flow has no requirements, it auto-succeeds. In the future, other flows (e.g. captcha) may be required, so clients should treat this like the regular registration flow choices.
* Remove unused importDaniel Wagner-Hall2015-08-261-1/+0
|
* Swap out bcrypt for md5 in testsDaniel Wagner-Hall2015-08-261-1/+1
| | | | This reduces our ~8 second sequential test time down to ~7 seconds
* Merge erikj/user_dedup to developDaniel Wagner-Hall2015-08-261-2/+2
|
* Move token generation to auth handlerDaniel Wagner-Hall2015-08-201-19/+7
| | | | | I prefer the auth handler to worry about all auth, and register to call into it as needed, than to smatter auth logic between the two.
* Re-add whitespace around caveat operatorsDaniel Wagner-Hall2015-08-191-4/+4
|
* Remove padding space around caveat operatorsDaniel Wagner-Hall2015-08-181-4/+4
|
* Fix some formatting to use tuplesDaniel Wagner-Hall2015-08-181-4/+4
|
* Issue macaroons as opaque auth tokensDaniel Wagner-Hall2015-08-181-6/+13
| | | | | | | | | | | | | This just replaces random bytes with macaroons. The macaroons are not inspected by the client or server. In particular, they claim to have an expiry time, but nothing verifies that they have not expired. Follow-up commits will actually enforce the expiration, and allow for token refresh. See https://bit.ly/matrix-auth for more information
* Simplify LoginHander and AuthHandlerDaniel Wagner-Hall2015-08-121-5/+5
| | | | | | | | | * Merge LoginHandler -> AuthHandler * Add a bunch of documentation * Improve some naming * Remove unused branches I will start merging the actual logic of the two handlers shortly
* Fix v2_alpha registration. Add unit tests.Kegan Dougal2015-07-281-1/+2
| | | | | | | | V2 Registration forced everyone (including ASes) to create a password for a user, when ASes should be able to omit passwords. Also unbreak AS registration in general which checked too early if the given username was claimed by an AS; it was checked before knowing if the AS was the one doing the registration! Add unit tests for AS reg, user reg and disabled_registration flag.
* code beautifyMuthu Subramanian2015-07-081-1/+0
|
* Integrate SAML2 basic authentication - uses pysaml2Muthu Subramanian2015-07-081-0/+30
|
* revert accidental bcrypt gensalt round reduction from loadtestingMark Haines2015-05-071-1/+1
|
* pynacl-0.3.0 was released so we can finally start using it directly from pypiMark Haines2015-05-071-1/+1
|
* pep8David Baker2015-04-171-4/+1
|
* Need to yield the username check, otherwise very very weird things happen.David Baker2015-04-171-1/+1
|
* Oops, left debugging in.David Baker2015-04-161-6/+0
|
* Return user ID in use error straight awayDavid Baker2015-04-161-63/+39
|
* Regstration with email in v2David Baker2015-04-151-1/+5
|
* New registration for C/S API v2. Only ReCAPTCHA working currently.David Baker2015-03-301-1/+10
|
* Factor out user id validation checksErik Johnston2015-03-181-0/+8
|
* Implement exclusive namespace checks.Kegan Dougal2015-02-271-5/+6
|
* Merge branch 'develop' into application-servicesKegan Dougal2015-02-111-5/+8
|\
| * Code-style fixesMark Haines2015-02-101-5/+8
| |
* | Merge branch 'develop' into application-servicesKegan Dougal2015-02-091-0/+17
|\|
| * don't give up if we can't create default avatars during testsMatthew Hodgson2015-02-071-9/+12
| |
| * ...and here's the actual impl. git fail.Matthew Hodgson2015-02-071-0/+14
| |
* | Add errcodes for appservice registrations.Kegan Dougal2015-02-061-4/+7
| |