Commit Graph

159 Commits

Author SHA1 Message Date
Michael Telatynski 9535594ff8 Tidy up 2026-03-04 10:32:58 +00:00
Michael Telatynski adfd99ca7d Tests galore 2026-03-03 18:25:22 +00:00
Michael Telatynski 5173170bf5 Adapt restricted guests module for Login UX 2026-03-03 09:35:54 +00:00
Michael Telatynski 5bc64a19da Update services.ts 2026-03-02 13:08:52 +00:00
renovate[bot] 1d9664ef10 Update npm non-major dependencies 2026-03-01 16:05:52 +00:00
Andrew Morgan 9a8ef99b8c Disable local registration when using MAS 2026-02-05 14:04:45 +00:00
Andrew Morgan 1b3243cb00 Disable local passwords in MAS Synapse
Otherwise we'll get the following error upon Synapse startup: Password auth cannot be enabled while OAuth delegation is enabled.
2026-02-05 14:04:37 +00:00
Andrew Morgan 7c62578252 Create MAS container and tests for restricted guests testing
Add a new container that both:

- Spins up a MAS instance.
- Loads the restricted guests module into Synapse, and configures it
  accordingly.

Then extend restricted guests spec to include MAS tests.

This requires setting up MAS' config to recognise the module as an
automated client (so that it can request Admin perms to
create/deactivate users).
2026-02-05 14:04:33 +00:00
Ben Banfield-Zanin 306e21331b Merge pull request #177 from anoadragon453/anoa/synapse_guest_module_mas
Make the Synapse Restricted Guests module compatible with MAS
2026-02-05 11:12:15 +00:00
Andrew Morgan ab8a307d5d Make {mas_,}user_id DB tables NOT NULL 2026-02-04 16:31:19 +00:00
Andrew Morgan e1b42da345 lint 2026-01-23 17:05:56 +00:00
Andrew Morgan 85ef24f917 Remove test runtime checks for AsyncMock vs. Mock
Turns out they're always AsyncMock.
2026-01-23 16:52:21 +00:00
Andrew Morgan c6dabf052b Remove fallback wrapper for post_urlencoded_get_json 2026-01-23 16:36:59 +00:00
Andrew Morgan 7abb63f1f2 Don't be cryptographically random!
That's what you get for generating a random string function.
2026-01-23 15:18:55 +00:00
Andrew Morgan ecd25faec8 Add docstring for request_admin_token 2026-01-23 15:16:39 +00:00
Andrew Morgan a4173bb1dd expires_in -> expires_in_sec + docstring 2026-01-23 14:55:17 +00:00
Andrew Morgan e0304c627b created_at -> created_at_sec 2026-01-23 14:41:06 +00:00
Andrew Morgan 2e71abdfda Add user_id field to guest_module_mas_users
Currently unused, but may be useful in future.
2026-01-23 14:38:19 +00:00
Andrew Morgan 514c6957f7 Log MXID and MAS ID when registering guest user 2026-01-23 14:02:00 +00:00
Andrew Morgan f88a280b8b Correct typo in comment 2026-01-23 13:52:19 +00:00
Andrew Morgan 2a9c384213 Update tests for randomly generated device IDs
Pin the device ID in tests by mocking the generation function.
And test said generation function.
2026-01-19 14:34:03 +00:00
Andrew Morgan 3f53333448 Return the correct device ID
Turns out the client needs to generate it, and pass it as a scope. Clever!
2026-01-19 13:56:57 +00:00
Andrew Morgan b8fda8acdf lint 2026-01-19 13:04:31 +00:00
Andrew Morgan 41922415ba Update tests to run with MAS module variant
We now run the standard battery of tests with a MAS-enabled module. Some
minimal adjustment was needed to check MAS-specific outputs.
2026-01-16 19:21:38 +00:00
Andrew Morgan 55ca2be0f6 Update unit tests to check MAS config, deactivation works 2026-01-16 19:20:35 +00:00
Andrew Morgan 2aa16a8222 lint 2026-01-16 18:49:43 +00:00
Andrew Morgan d45fd845b3 Add client_secret_filepath option
To allow supplying the `client_secret` in a file, instead of directly in the configuration. I've found that ESS prefer this method in the past, so the entire config does not need to be a secret.
2026-01-16 18:05:33 +00:00
Andrew Morgan 9f4ca6f7e6 Store registered users in a namespaced table, deactivate upon expiry
To deactivate users, we need their `actor_user_id` (MAS-specific). I don't believe there's a way to get this from Synapse. So, we store user's detailed in a namespaced table upon registering them, along with the creation timestamp, and deactivate them once they're considered expired.
2026-01-16 18:05:33 +00:00
Andrew Morgan d0e17ae274 Add the ability to deactivate users in the MAS client
As we won't be able to deactivate them using the Synapse module API
2026-01-16 18:05:33 +00:00
Andrew Morgan 801d28f3ca Create a personal session on MAS
In order to get an access token for a user, one needs to create a personal session on MAS.

We now do so, and extract the access token and device ID from the response.

TODO: We're handing back the MAS user ID as the device ID. Is that correct?
2026-01-16 18:05:33 +00:00
Andrew Morgan 9c2b9463a9 Wire the new MasAdminClient in
If `mas` is defined in the config, then use it to create users instead
of Synapse's module API.
2026-01-16 18:05:33 +00:00
Andrew Morgan 04414e06a9 Add MasAdminClient class
A class to request OAuth2 tokens from MAS, and create users using them.

Requires data from the config options we defined.
2026-01-16 18:05:33 +00:00
Andrew Morgan 1cb888e4e7 Configuration options for MAS
In order to create and manage users with MAS enabled, we'll need to
reach out to the MAS admin API. We can do so automatically by requesting
an admin-enabled token, assuming a matching client has been configured
on the MAS side.

Add some config options for the guest module (OAuth2 client) side.
2026-01-16 18:05:33 +00:00
Michael Telatynski cf7d63acfd Merge pull request #179 from anoadragon453/anoa/pin_prometheus_client 2026-01-15 12:26:48 +00:00
Andrew Morgan f117e745d5 Remove superfluous pin
The tox venv is what actually matters here.
2026-01-15 11:45:41 +00:00
Andrew Morgan d9c55189f4 Unbreak CI: pin prometheus-client dep 2026-01-15 11:40:58 +00:00
Florian Duros 6cf4cab1dc Merge pull request #167 from element-hq/florianduros/restricted-guest/font-css-grgr 2025-12-19 11:07:47 +01:00
Florian Duros f99db77b34 style: set font for restricted guest dialog 2025-12-18 18:06:58 +01:00
Florian Duros 7b545ea0f2 Merge pull request #165 from element-hq/florianduros/banner/font-spacing 2025-12-18 12:24:10 +01:00
Florian Duros 1cca19c7a0 Merge pull request #166 from element-hq/florianduros/restricted-guests/font-spacing 2025-12-18 12:23:58 +01:00
Florian Duros 0783237f56 test: update snapshot 2025-12-18 11:49:40 +01:00
Florian Duros 929a1d4d00 style: set font spacing and font feature settings 2025-12-18 11:38:40 +01:00
Florian Duros 339e05da2c fix: set font feature settings 2025-12-18 10:52:10 +01:00
Florian Duros 39a61cdd1f fix: set font spacing 2025-12-18 10:41:45 +01:00
Florian Duros 3d1b362fb2 Merge pull request #163 from element-hq/florianduros/banner/fix-css
Banner: set font on the sidebar
2025-12-18 09:47:35 +01:00
Florian Duros 761bc952d0 Merge pull request #164 from element-hq/florianduros/restricted-guests/fix-css
Restricted-guests: set font on preview bar
2025-12-18 09:47:23 +01:00
Florian Duros 6c38cb0768 test: update screenshots 2025-12-17 18:26:08 +01:00
Florian Duros 056ef3656a test: update screenshots 2025-12-17 18:15:10 +01:00
Florian Duros ec74fc8235 style: set font size on preview bar 2025-12-17 18:13:52 +01:00
Florian Duros 03958a054c style: set font on the sidebar 2025-12-17 18:01:21 +01:00