Commit Graph

49 Commits (f5e6cbafb2682a779660e77bfaf924a793f3d104)

Author SHA1 Message Date
Travis Ralston a5ce1c9dcb
Add support for redirecting to external pages after logout (#7905)
* Add support for redirecting to external pages after logout

This is primarily useful for deployments where the account is managed and needs to be logged out in other places too, like an SSO system.

See docs for more information.

* Add e2e test and fix Windows instructions

* Fix performance gathering stats

* use logger
2022-03-01 11:06:17 -07:00
Travis Ralston bd1568f4e4 Un-break crypto for soft logout 2022-02-16 12:33:33 -07:00
Travis Ralston aba61fa390 Revert "Support refresh tokens (#7802)"
This reverts commit 839593412c.
2022-02-16 12:32:38 -07:00
Travis Ralston 839593412c
Support refresh tokens (#7802)
MSC: https://github.com/matrix-org/matrix-doc/pull/2918
Fixes https://github.com/vector-im/element-web/issues/18698
Fixes https://github.com/vector-im/element-web/issues/20648
**Requires https://github.com/matrix-org/matrix-js-sdk/pull/2178**

**Note**: There's a lot of logging in this PR. That is intentional to ensure that if/when something goes wrong we can chase the exact code path. It does not log any tokens - just where the code is going. Overall, it should be fairly low volume spam (and can be relaxed at a later date).

----

This approach uses indexeddb (through a mutex library) to manage which tab actually triggers the refresh, preventing issues where multiple tabs try to update the token. If multiple tabs update the token then the server might consider the account hacked and hard logout all the tokens.

If for some reason the timer code gets it wrong, or the user has been offline for too long and the token can't be refreshed, they should be sent to a soft logout screen by the server. This will retain the user's encryption state - they simply need to reauthenticate to get an active access token again.

This additionally contains a change to fix soft logout not working, per the issue links above.

Of interest may be the IPC approach which was ultimately declined in favour of this change instead: https://github.com/matrix-org/matrix-react-sdk/pull/7803
2022-02-15 20:16:49 +00:00
Michael Telatynski 8d4e83084c
Remove Countly analytics integration (#7808) 2022-02-15 16:58:30 +00:00
Aaron Raimist 2e8a93834b Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-12-09 09:10:23 +00:00
Aaron Raimist 7b94e13a84 Merge branch 'develop' into sort-imports
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-12-09 08:34:20 +00:00
James Salter 5219b6be80
Analytics opt in for posthog (#6936)
* Add a new flag pseudonymousAnalyticsOptIn replacing analyticsOptIn, stored at account level, so people only need to opt in once.

* Show a toast in login to users that have analyticsOptIn set but not yet pseudonymousAnalyticsOptIn prompting them confirm the new method is okay. Update the copy of the existing opt-in toast. Don't notify users that previously opted out.

* Update the copy in settings

* Add a new learn more dialog

* Support a new config flag analyticsOwner which is used in these toasts when explaining which entity the data is sent to ("Help improve %(analyticsOwner)"). If unset, display brand. This allows deployments whose brand differs from the receiver of the analytics to explain the situation to their users (e.g. AcmeCorp badges their app, but explains the data is sent to Element, not them)

* The new opt-in and flags are only used when posthog is configured; prior to that there are no changes to UX or tracking behaviour.
2021-12-06 09:39:33 +11:00
Michael Telatynski aa7cae08aa
Add utility method mxLoginWithAccessToken to login with existing access token (#7261) 2021-12-02 13:46:44 +00:00
Šimon Brandner cbb34d8ac7
Make `CallHandler` more `EventEmitter`y (#6704)
* sharedInstance() -> instance

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use CallState event instead of dispatching

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Simplifie some code

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use a method to start a call instead of the dispatcher

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use a method instead of place_conference_call

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Make terminateCallApp() and hangupCallApp() public

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use hangupAllCalls() instead of the dispatcher

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Make dialNumber(), startTransferToMatrixID() and startTransferToPhoneNumber() public instead of using the dispatcher

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use answerCall() instead of using the dispatcher

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Use hangupOrReject() instead of the dispatcher

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Update docs

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Improve TS

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Dispatch call_state, see https://github.com/vector-im/element-web/pull/18823#issuecomment-917377277

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Add missing import

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-11-30 18:09:13 +00:00
James Salter e549438e2a
Add logging for a bunch of silently swallowed errors (#7148) 2021-11-18 09:01:45 +11:00
James Salter 3defb863b3
Automatic error reporting (#7046)
* Enable sentry global handlers if automaticErrorReporting is on

* Pass the exception through on session restore error

Passing the exception object itself through to the BugReportDialog means a stack trace can be correctly recorded in Sentry
2021-10-29 08:34:25 +00:00
Aaron Raimist bdc56be863
Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-10-22 17:23:37 -05:00
Dariusz Niemczyk 5290afcc4c Replace console.warn with logger.warn
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk 5e73a212f4 Replace console.error with logger.error
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Šimon Brandner af9429c8a0
Convert ActiveWidgetStore to TS
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-09-26 19:57:02 +02:00
Dariusz Niemczyk 2d1d42b90e
Globally replace all console.logs via codemod (#6827)
This commit replaces all the `console.log` to `logger.log` via an automated script.
Related: vector-im/element-web#18425
2021-09-21 09:48:09 -06:00
James Salter a43f5507a3 Use a UUID instead of hashed user ID for tracking
Generate a UUID and save it to account data for cross device tracking.
2021-09-14 15:30:42 +01:00
James Salter dc7aad1abf Revert "Revert "Add support for Posthog Analytics under a labs flag""
This reverts commit c5ea253181.
2021-08-03 11:55:02 +01:00
James Salter c5ea253181
Revert "Add support for Posthog Analytics under a labs flag" 2021-08-03 07:30:02 +01:00
James Salter a1ffd240e1 Use .instance pattern 2021-07-29 14:40:18 +01:00
James Salter 1d81bdc6f9 Interface changes and anonymity fixes 2021-07-28 09:37:08 +01:00
James Salter c34afdb4bd Refactor platform properties loading 2021-07-21 18:35:25 +01:00
James Salter 34f8c60b34 Hook analytics into the SDK 2021-07-21 16:15:18 +01:00
Michael Telatynski 9d45a3760f Fix types of the various query params dicts, arrays can be included e.g via 2021-07-16 13:11:43 +01:00
Šimon Brandner a4fe2f143f
First batch of burning
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-07-02 12:12:41 +02:00
Michael Telatynski 6250d9ba61
Merge branch 'develop' into t3chguy/ts/4 2021-06-29 22:24:47 +01:00
J. Ryan Stinnett ae0a8b8da4 Auto-fix lint errors 2021-06-29 13:11:58 +01:00
Michael Telatynski 4492627401 More js-sdk type consolidation 2021-06-24 19:20:02 +01:00
Travis Ralston 1d9d0cd7be Convert a bunch more js-sdk imports to absolute paths
Turns out a lot of the typescript warnings about improper warnings were correct. TypeScript appears to be pulling in two copies of the js-sdk when we do this, which can lead to type conflicts (or worse: the wrong code entirely). We fix this at the webpack level by explicitly importing from `src`, but some alternative build structures have broken tests because of this - jest ends up pulling in the "wrong" js-sdk, breaking things.
2021-03-18 20:50:34 -06:00
Michael Telatynski 69b2d67250
Update src/Lifecycle.ts
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
2021-02-02 12:58:31 +00:00
Michael Telatynski 5d86c2f8e0 Better errors for SSO failures 2021-02-01 16:42:58 +00:00
Michael Telatynski e6673bca1b Improve SSO auth flow
Use replaceState instead of a redirect to strip the loginToken
Put user into the same post-auth flows of E2ESetup
Skip UIA prompt in this post-auth flow, happy path is a server grace period
2021-01-27 12:50:12 +00:00
Hubert Chathi 649ea0d148 apply changes from review, and other fixes/improvements 2020-12-10 21:52:18 -05:00
Hubert Chathi 753ec9e45a use random pickle key on all platforms, and store access token encrypted in IDB 2020-12-09 18:40:31 -05:00
J. Ryan Stinnett e64b6b07c9
Merge pull request #5448 from matrix-org/jryans/lifecycle-customisations
Add lifecycle customisation point after logout
2020-11-27 11:45:48 +00:00
J. Ryan Stinnett 25cc4b89b8 Add lifecycle customisation point after logout
This will help specific deployments that need to do something custom here such
as redirect the user or call some API after Element has logged out and cleared
storage.
2020-11-27 11:23:01 +00:00
Michael Telatynski edd5bf5842
Merge pull request #5421 from matrix-org/t3chguy/fix/15700
Simplify UserMenu for Guests as they can't use most of the options
2020-11-27 10:57:54 +00:00
David Baker bc2fd7cf05 Start is not stop 2020-11-23 16:41:57 +00:00
David Baker 37059a3fcd Move call listener out of MatrixChat
and into callhandler
2020-11-23 16:20:15 +00:00
Michael Telatynski 5f23c9499c Simplify UserMenu for Guests as they can't use most of the options 2020-11-12 12:46:55 +00:00
Michael Telatynski 171b3ede76 improve comments 2020-10-30 14:27:14 +00:00
Michael Telatynski b01055f962 Tidy up and fix some edge cases 2020-10-30 10:26:15 +00:00
J. Ryan Stinnett 388cb0e2c1 Add security customisation points
This adds various customisations point in the app for security related
decisions. By default, these do nothing, but would be customised at the
app level via module replacement (so that no changes are needed here in the
SDK).

Fixes https://github.com/vector-im/element-web/issues/15350
2020-10-16 11:21:44 +01:00
J. Ryan Stinnett 5a4ca4578a Sprinkle some ts-ignore lines 2020-10-07 17:18:19 +01:00
J. Ryan Stinnett 28e458075a Fix types after underscore changes 2020-10-07 15:10:11 +01:00
J. Ryan Stinnett 72bd72e524 Remove underscores 2020-10-07 13:32:30 +01:00
J. Ryan Stinnett f2b72efe39 Remove various remaining bits of ILAG flows
TypeScript helpfully pointed me towards this dead code, which has been floating
around unused for a while. If we want to bring back ILAG in the future, we can
always revive it from history.
2020-10-07 12:53:59 +01:00
J. Ryan Stinnett 1b255e42c3 Convert src/Lifecycle.ts to TypeScript 2020-10-07 12:53:59 +01:00