Andrew Ferrazzutti
8bacf44c68
Revert GraphQL's unlock to also reactivate
...
Unlike the CLI and admin API, leave the behaviour of the GraphQL's
unlock handler unchanged from before, so as to not break internal
tooling that depends on it.
Also update its documentation description to make note of the fact that
it reactivates in addition to unlocks.
2025-07-16 14:17:01 -04:00
Andrew Ferrazzutti
49540693ab
Decouple (un)locking from (re/de)activation
...
Unify the admin API, CLI, and GraphQL API in not having the unlock
command also reactivate, or the deactivate command also lock.
Still let the unlock command of the CLI and GraphQL API to also
reactivate the target user, albeit as a non-default option.
2025-07-16 14:17:01 -04:00
Quentin Gliech
642c8ba508
Support for experimental plan management tab in UI ( #4549 )
2025-06-10 14:14:24 +02:00
Hugh Nimmo-Smith
211a124ee2
Schema update
2025-06-06 14:40:45 +01:00
Hugh Nimmo-Smith
0551b93cae
Update schemas
2025-06-06 10:45:23 +01:00
Quentin Gliech
82913763b6
Update generated GraphQL schema
2025-06-03 16:26:18 +02:00
Hugh Nimmo-Smith
aad2d8afb3
Merge branch 'main' into hughns/plan-management
2025-05-09 10:33:39 +01:00
Quentin Gliech
cf9d4599f9
graphql: add mutation to update device name
2025-04-25 16:55:30 +02:00
Quentin Gliech
79868c3ca3
graphql: expose the humanName field on OAuth 2.0 sessions
2025-04-25 16:55:30 +02:00
Quentin Gliech
badaf35fcf
frontend: expose the compat session humanName
2025-04-25 12:55:11 +02:00
Hugh Nimmo-Smith
57cc89a0c8
WIP support for experimental plan management tab in UI
2025-04-22 13:17:29 +01:00
mcalinghee
2fe4752aa4
add login by email + feature flag
2025-04-10 17:57:58 +02:00
Quentin Gliech
8d721c14b1
Explain what the 'hsErase' parameter does
2025-03-13 11:36:53 +01:00
Quentin Gliech
1846229f34
GraphQL mutation to deactivate a user
2025-03-12 15:58:54 +01:00
Quentin Gliech
a6992b718c
Config option to allow account self-deactivation
2025-03-12 15:58:54 +01:00
Quentin Gliech
629a194c35
Require the user password to add or remove an email address
2025-03-06 17:37:54 +01:00
Quentin Gliech
2dce10d9b4
Only show the password change section if the user has a password
2025-02-24 14:28:06 +01:00
reivilibre
87009be7e6
Support compatibility sessions that do not have devices ( #3801 )
...
Co-authored-by: Quentin Gliech <quenting@element.io >
2025-01-27 14:50:31 +00:00
Quentin Gliech
7f1b3866ba
Disclose that email is already in use after verification
2025-01-23 18:18:19 +01:00
Quentin Gliech
ea6b80c5ac
Rate-limit email authentications
2025-01-23 12:09:26 +01:00
Quentin Gliech
a739a78602
GraphQL API to use the new email authentication codes
2025-01-14 15:47:36 +01:00
Quentin Gliech
9db14f6743
Rip out the email verification codes
...
This considers all user_emails as confirmed, and removes the verification code.
It will be replaced by a new email authentication code flow
2025-01-14 15:46:45 +01:00
Quentin Gliech
c86f8800bd
Polish the password recovery page
...
This includes:
- show an error message if the recovery link is expired, with a button
to resend the email
- show an error message if the recovery link has already been used
- include an invisible username field in the form, so that password
managers can save the new password
2025-01-13 16:58:42 +01:00
Quentin Gliech
17430c21c5
Additional fields in the GraphQL API for upstream providers
2025-01-06 11:59:43 +01:00
Quentin Gliech
f563daf822
Make the issue optional on upstream OAuth 2.0 providers
2024-12-17 13:40:34 +01:00
Quentin Gliech
03838bd909
Remove contacts from the data model
2024-09-20 20:39:04 +02:00
Olivier 'reivilibre
9f66cb783f
graphql: Expose CAPTCHA config and whether password registration is enabled
2024-07-26 13:02:58 +01:00
reivilibre
3c118e2b7a
graphql: Add a SetPasswordByRecovery mutation to perform account recovery ( #2986 )
2024-07-24 16:19:14 +01:00
Quentin Gliech
35e81405e2
graphql: allow filtering of sessions by last activity
2024-07-19 13:40:27 +02:00
Quentin Gliech
9987a4e305
Show whether the user is deactivated on the homeserver in the GraphQL API
...
Fix #2375
2024-07-16 13:20:28 +02:00
Quentin Gliech
eb8688172d
GraphQL API to unlock a user
...
Fixes #2101
2024-07-16 13:20:28 +02:00
reivilibre
a4891fa9ef
Backend work to support minimum password complexity ( #2965 )
...
* config: Add minimum password complexity option
* PasswordManager: add function for checking if complexity is sufficient
* Enforce password complexity on registration, change and recovery
* cli: Use exit code 1 for weak passwords
This seems preferable to exit code 0, but ideally we should choose one
and document it.
* Expose minimum password complexity score over GraphQL
2024-07-11 10:17:39 +01:00
Quentin Gliech
09ddf8de7c
graphql: users query to list users with a few filters
2024-07-05 13:44:14 +02:00
Quentin Gliech
210d35b29b
graphql: move the users queries to their own module
2024-07-05 13:44:14 +02:00
Quentin Gliech
6ec7469123
Update the schema
2024-07-05 10:07:40 +02:00
reivilibre
47f87b686b
Add Self-service Password Change ( #2863 )
...
Co-authored-by: Quentin Gliech <quenting@element.io >
2024-06-25 13:25:33 +00:00
reivilibre
8b9e5f1fc8
GraphQL API: Add password_change_allowed to SiteConfig ( #2857 )
2024-06-20 15:16:50 +01:00
reivilibre
efa0057491
Add a setPassword GraphQL mutation for setting a user's password ( #2820 )
...
* Feed `PasswordManager` through to the GraphQL `State`
* Add `setPassword` GraphQL mutation to update a user's password
2024-06-05 18:04:17 +01:00
Quentin Gliech
ff66d292f6
Hide the displayname edit button if disabled in the config
2024-04-30 13:33:47 +02:00
Quentin Gliech
460e3b19fe
Expose the site config in the GraphQL API
2024-04-30 13:33:47 +02:00
Quentin Gliech
9b87147d8f
graphql: check that the username is available when creating them
...
This calls the HS to make sure the username isn't reserved.
This check can be bypassed using the `skipHomeserverCheck` flag on the
`addUser` mutation.
2024-02-29 11:21:24 +01:00
Quentin Gliech
a7dc41fdba
Parse User Agents on the backend side ( #2388 )
...
* Parse user agents on the server side
* Parse and expose user agents on the backend
* Use the parsed user agent in the device consent page
* Fix the device icon tests
* Fix clippy warnings
* Box stuff to avoid large enum variants
* Ignore a clippy warning
* Fix the requester boxing
2024-02-23 16:47:48 +01:00
Quentin Gliech
d3c799b3ae
Save which user session created a compat session
...
This also exposes the user session in the GraphQL API, and allow
filtering on browser session ID on the app session list.
2024-02-21 11:55:58 +01:00
Quentin Gliech
76cdec56f0
Replace Jotai with @tanstack/router ( #2359 )
...
* Start replacing jotai with @tanstack/router
* Remove jotai completely
* Move the common layout & reimplement the ?action parameter
This also makes sure everything is properly loaded in the route loader,
and we use fragment where it makes sense
* Change the default error component
* GraphQL API: make the sessions fetchable through node(id: ID!)
2024-02-15 17:19:05 +01:00
Quentin Gliech
c11c7a0772
Add a GraphQL mutation to allow cross-signing reset
2023-12-05 17:47:36 +01:00
Quentin Gliech
92d2a18afb
"Can request admin" flag on user
2023-10-09 18:52:30 +02:00
Quentin Gliech
90aaf395d8
graphql: allow filtering appsessions on device_id
2023-10-06 16:05:26 +02:00
Quentin Gliech
bec2cda552
Expose a unified session list in the GraphQL API
2023-09-20 20:27:08 +02:00
Quentin Gliech
8e73092ad0
Make the last activity timestamp and IP available through the API
2023-09-19 21:57:54 +02:00
Quentin Gliech
e8f17924c2
Add a GraphQL mutation to create arbitrary OAuth2 sessions.
2023-09-11 12:03:42 +02:00