Andrew Ferrazzutti
8ac2770cf7
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
d807975137
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
8df03bf185
Support for experimental plan management tab in UI ( #4549 )
2025-06-10 14:14:24 +02:00
Hugh Nimmo-Smith
55f559ece8
Schema update
2025-06-06 14:40:45 +01:00
Hugh Nimmo-Smith
037d90bb1a
Update schemas
2025-06-06 10:45:23 +01:00
Quentin Gliech
500e0ca22c
Update generated GraphQL schema
2025-06-03 16:26:18 +02:00
Hugh Nimmo-Smith
25de9bcb15
Merge branch 'main' into hughns/plan-management
2025-05-09 10:33:39 +01:00
Quentin Gliech
1696102592
graphql: add mutation to update device name
2025-04-25 16:55:30 +02:00
Quentin Gliech
fe1d15ab0e
graphql: expose the humanName field on OAuth 2.0 sessions
2025-04-25 16:55:30 +02:00
Quentin Gliech
4341bff235
frontend: expose the compat session humanName
2025-04-25 12:55:11 +02:00
Hugh Nimmo-Smith
457ade5a60
WIP support for experimental plan management tab in UI
2025-04-22 13:17:29 +01:00
mcalinghee
f2a47f9a88
add login by email + feature flag
2025-04-10 17:57:58 +02:00
Quentin Gliech
238be90812
Explain what the 'hsErase' parameter does
2025-03-13 11:36:53 +01:00
Quentin Gliech
1f03d6da03
GraphQL mutation to deactivate a user
2025-03-12 15:58:54 +01:00
Quentin Gliech
19f1091e56
Config option to allow account self-deactivation
2025-03-12 15:58:54 +01:00
Quentin Gliech
09d185da6d
Require the user password to add or remove an email address
2025-03-06 17:37:54 +01:00
Quentin Gliech
03eaeca8a6
Only show the password change section if the user has a password
2025-02-24 14:28:06 +01:00
reivilibre
0c26dd859a
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
7e6ab8ffc3
Disclose that email is already in use after verification
2025-01-23 18:18:19 +01:00
Quentin Gliech
ef077d0e51
Rate-limit email authentications
2025-01-23 12:09:26 +01:00
Quentin Gliech
23b019c626
GraphQL API to use the new email authentication codes
2025-01-14 15:47:36 +01:00
Quentin Gliech
0513f198d8
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
4ca76be866
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
b5940b969f
Additional fields in the GraphQL API for upstream providers
2025-01-06 11:59:43 +01:00
Quentin Gliech
a97d2daa3d
Make the issue optional on upstream OAuth 2.0 providers
2024-12-17 13:40:34 +01:00
Quentin Gliech
21fb01d961
Remove contacts from the data model
2024-09-20 20:39:04 +02:00
Olivier 'reivilibre
8737d6f89b
graphql: Expose CAPTCHA config and whether password registration is enabled
2024-07-26 13:02:58 +01:00
reivilibre
8147016735
graphql: Add a SetPasswordByRecovery mutation to perform account recovery ( #2986 )
2024-07-24 16:19:14 +01:00
Quentin Gliech
6f2ab4f738
graphql: allow filtering of sessions by last activity
2024-07-19 13:40:27 +02:00
Quentin Gliech
fa32387ca5
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
bac2db9884
GraphQL API to unlock a user
...
Fixes #2101
2024-07-16 13:20:28 +02:00
reivilibre
fbc360d1a9
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
f849b487cf
graphql: users query to list users with a few filters
2024-07-05 13:44:14 +02:00
Quentin Gliech
8a1ac9cc91
graphql: move the users queries to their own module
2024-07-05 13:44:14 +02:00
Quentin Gliech
378bcbc39e
Update the schema
2024-07-05 10:07:40 +02:00
reivilibre
aaa7cf3fe9
Add Self-service Password Change ( #2863 )
...
Co-authored-by: Quentin Gliech <quenting@element.io >
2024-06-25 13:25:33 +00:00
reivilibre
121966ccce
GraphQL API: Add password_change_allowed to SiteConfig ( #2857 )
2024-06-20 15:16:50 +01:00
reivilibre
d76b54b13f
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
ee68521792
Hide the displayname edit button if disabled in the config
2024-04-30 13:33:47 +02:00
Quentin Gliech
49cf6dc5cc
Expose the site config in the GraphQL API
2024-04-30 13:33:47 +02:00
Quentin Gliech
452f4c17f5
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
f3cbd3b315
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
ed5893eb20
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
e041f47dfe
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
f8d745d308
Add a GraphQL mutation to allow cross-signing reset
2023-12-05 17:47:36 +01:00
Quentin Gliech
3cb8a26d95
"Can request admin" flag on user
2023-10-09 18:52:30 +02:00
Quentin Gliech
2a100ab927
graphql: allow filtering appsessions on device_id
2023-10-06 16:05:26 +02:00
Quentin Gliech
d91b0e20e4
Expose a unified session list in the GraphQL API
2023-09-20 20:27:08 +02:00
Quentin Gliech
50558a7319
Make the last activity timestamp and IP available through the API
2023-09-19 21:57:54 +02:00
Quentin Gliech
83ca90ee3d
Add a GraphQL mutation to create arbitrary OAuth2 sessions.
2023-09-11 12:03:42 +02:00