Commit graph

201 commits

Author SHA1 Message Date
David Baker
c749b6355f Update email help text
Fixes https://github.com/vector-im/riot-web/issues/10674
2019-08-28 10:34:50 -04:00
J. Ryan Stinnett
ac6b03551a
Describe props default
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2019-08-28 11:24:11 +01:00
David Baker
ac2b8b874f Don't infinite loop on server change
ServerConfig assumed that the state was already correct when
checking the given urls against the default, but that is not
neccessarily the case (eg. the validation can return a different
url to what the user entered). This would cause an infinite loop
because it would keep firing onServerConfigChange to change to
the desired URLs but the state would never change.

Fixes part of https://github.com/vector-im/riot-web/issues/10666
2019-08-27 17:29:56 -04:00
J. Ryan Stinnett
72ec6c7062 Reveal custom IS field only when required
This hides the identity server at first from the custom server auth flows. For
the flows that may need an IS if the HS requires it (registration, password
reset), we then check with the HS before proceeding further and reveal the IS
field if it is in fact needed.

Fixes https://github.com/vector-im/riot-web/issues/10553
2019-08-23 18:43:55 +01:00
David Baker
41a9db3224 Use new flag in /versions 2019-08-16 15:07:15 +01:00
David Baker
e705d110af Allow registering with email if no ID Server
If the server advertises that it supports doing so

This version uses a random me.dbkr prefix until the MSC is
written.

Requires https://github.com/matrix-org/matrix-js-sdk/pull/1017
Implements https://github.com/matrix-org/matrix-doc/pull/2233
2019-08-16 11:57:32 +01:00
Michael Telatynski
691b9145ee
Merge pull request #3303 from matrix-org/t3chguy/ModularServerConfig_extend_ServerConfig
Deduplicate code in ModularServerConfig by extending ServerConfig
2019-08-12 14:19:17 +01:00
Michael Telatynski
3e08bf6ecb Deduplicate code in ModularServerConfig by extending ServerConfig
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-11 03:34:12 +01:00
Michael Telatynski
242f23c753 RegistrationForm: the Fields are controlled, fix default values
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-09 18:08:17 +01:00
David Baker
366f7e277a Make registration work without an IS. 2019-08-07 11:15:56 +01:00
Travis Ralston
ff0c4c0571
Merge pull request #3211 from matrix-org/travis/send-proper-uia
Send the correct UIA alongside the wrong UIA for backwards comaptibility
2019-07-12 08:14:01 -06:00
Travis Ralston
7a3aa9be2e Remove unused identityEnabled property from ValidatedServerConfig
See https://github.com/vector-im/riot-web/issues/10229
2019-07-11 15:11:09 -06:00
Travis Ralston
ba5238d86a Finally fix tests 2019-07-11 15:01:56 -06:00
Travis Ralston
862fb16120 Send the correct UIA alongside the wrong UIA for backwards comaptibility
Fixes https://github.com/vector-im/riot-web/issues/10312
2019-07-11 14:28:10 -06:00
J. Ryan Stinnett
7fc1288614 Fix login type selector border
This fixes a regression in the login type selector's border and placement.

Fixes https://github.com/vector-im/riot-web/issues/10223
2019-07-02 15:09:51 +01:00
J. Ryan Stinnett
9591e6b0d3
Merge pull request #3071 from matrix-org/t3chguy/authentication_password_field
Switch ugly password boxes to Field or styled input
2019-06-19 09:31:11 +01:00
David Baker
10f6abfe17 Allow changing server if validation has failed
Show the server config section if there's an error and fix an if
case where we forgot to un-set the busy flag
2019-06-17 18:47:20 +01:00
Michael Telatynski
fbe8d1c89b Switch DeactivateAccountDialog to Field and cleanups
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-16 10:42:46 +01:00
Michael Telatynski
3563b83762 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/authentication_password_field 2019-06-16 10:31:30 +01:00
David Baker
06a11f4d45 Random blank lines 2019-06-13 18:31:04 +01:00
David Baker
e884cccabe Allow changing servers on nonfatal errors
Fixes https://github.com/vector-im/riot-web/issues/10016
2019-06-13 18:23:33 +01:00
J. Ryan Stinnett
a1d0b8c5f3
Merge pull request #3080 from matrix-org/jryans/lowercase-letters
Clarify that only lowercase letters are allowed
2019-06-07 20:40:55 +01:00
J. Ryan Stinnett
b2a9402d3f Clarify that only lowercase letters are allowed
We only allow lowercase letters in localparts.

Fixes https://github.com/vector-im/riot-web/issues/9983
2019-06-07 13:57:30 +01:00
Michael Telatynski
bd0e676b46 Switch ugly password boxes to Field or styled input
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-06 09:16:28 +01:00
Travis Ralston
e2fdeec71a Fail more softly on homeserver liveliness errors
This performs liveliness checks on the auth pages to try and show a friendlier error. Earlier checks in the app startup are expected to not block the app from loading on such failures.

See https://github.com/vector-im/riot-web/issues/9828
2019-06-04 23:42:38 -06:00
Travis Ralston
ecc0552e89 ToUpper the country code 2019-06-01 09:12:09 -06:00
Travis Ralston
c12ef8829c Remove debugging 2019-05-31 21:26:22 -06:00
Travis Ralston
3f646f13dd Add option to change the default country code
Fixes https://github.com/vector-im/riot-web/issues/9926
2019-05-31 21:25:13 -06:00
J. Ryan Stinnett
1e3e9f4f87 Remove username on HS input label
Removes redundant HS name on the username input that duplicates the header above
it.

Fixes https://github.com/vector-im/riot-web/issues/9884
2019-05-29 17:48:16 +01:00
Travis Ralston
ea1c778bb1 Fix copyright 2019-05-22 23:35:05 -06:00
Travis Ralston
14dc4b47fa Merge branch 'develop' into travis/feature/wellknown2 2019-05-22 23:05:54 -06:00
David Baker
90eb3ce9ec js-sdk interactive auth now sends email token
We previously sent it in componentWillMount of the email token
auth component which definitely gets us on react's naughtly list.
We now pass the js-sdk a callback it can call at the appropriate
time to send the token (https://github.com/matrix-org/matrix-js-sdk/pull/926).

We should make password reset and adding email addresses work the
same way, but currently they don't even use the interactive-auth
helpers(!) so they're unaffected.

https://github.com/vector-im/riot-web/issues/9586
2019-05-22 11:51:26 +01:00
Travis Ralston
8c326bff9e
Merge pull request #2964 from matrix-org/travis/wk/simplify-phases
Refactor "Next" button into ServerConfig components
2019-05-16 12:46:35 -06:00
Travis Ralston
6e3b06f364 Human de-linting 2019-05-15 13:56:15 -06:00
Travis Ralston
e4576dac28 Render underlines and tooltips on custom server names in auth pages
See https://github.com/vector-im/riot-web/issues/9290
2019-05-13 17:16:40 -06:00
Travis Ralston
ee33a4e9ba Refactor "Next" button into ServerConfig components
TODO still remains about making ModularServerConfig extend ServerConfig instead of duplicating everything.

See https://github.com/vector-im/riot-web/issues/9290
2019-05-13 16:30:34 -06:00
Travis Ralston
83737654ff Merge branch 'develop' into travis/feature/wellknown2 2019-05-13 09:20:10 -06:00
Travis Ralston
201fef8b11
Merge pull request #2947 from matrix-org/travis/password-score-config
Add configuration flag to disable minimum password requirements
2019-05-13 09:19:23 -06:00
David Baker
59cefbaa44
Typo
Co-Authored-By: J. Ryan Stinnett <jryans@gmail.com>
2019-05-13 14:24:56 +01:00
David Baker
34990d1c89 Fix bug where email was not required where it shouldn't have been
See comment!

Fixes https://github.com/vector-im/riot-web/issues/9681
2019-05-13 14:17:09 +01:00
Travis Ralston
4ffd826e76 Flip logic for unsafe->safe 2019-05-12 22:53:06 -06:00
Travis Ralston
6a941aca91
Merge pull request #2941 from matrix-org/travis/guests/block-ui
Use validated server config for login, registration, and password reset
2019-05-10 11:21:21 -06:00
J. Ryan Stinnett
2b2bfbeaaf Relax password requirements to score of 3 out of 4
This makes it a bit easier to meet the requirements while still requiring a
fairly strong value. The progress bar displays a score of 3 as reaching 100% for
simplicity.

Fixes https://github.com/vector-im/riot-web/issues/9642
2019-05-07 12:59:53 +01:00
Travis Ralston
c636f890b5 Add configuration flag to disable minimum password requirements
The configuration flag is intentionally long and annoying - the vast majority of people should not need this. The flag is intended to be used in development environments where accounts are often registered with no intention of them sticking around.
2019-05-06 09:55:27 -06:00
Travis Ralston
4ada66d319 Fix rogue instance of old hsUrl property 2019-05-03 11:34:30 -06:00
Travis Ralston
0b1a0c77b7 Make login pass around server config objects
Very similar to password resets and registration, the components pass around a server config for usage by other components. Login is a bit more complicated and needs a few more changes to pull the logic out to a more generic layer.
2019-05-03 11:33:36 -06:00
Travis Ralston
6b45e60314 Update ServerTypeSelector for registration to use a server config 2019-05-03 11:32:59 -06:00
Travis Ralston
636cb8a5cc Have ServerConfig and co. do validation of the config in-house
This also causes the components to produce a ValidatedServerConfig for use by other components.
2019-05-03 11:32:59 -06:00
J. Ryan Stinnett
af17829229 Blur active field before submit validation 2019-04-25 14:29:10 +01:00
J. Ryan Stinnett
67d7091dcd Password score progress should be full width in tooltip 2019-04-25 14:29:10 +01:00
J. Ryan Stinnett
a20d23daf3 Remove older password length check
Now that we have a fancier password complexity check, remove the older minimum
length to avoid the feeling of two password style guides fighting each other.
2019-04-25 14:29:10 +01:00
J. Ryan Stinnett
4f41161a47 Check password complexity during registration
This adds a password complexity rule during registration to require strong
passwords. This is based on the `zxcvbn` module that we already use for key
backup passphrases.

In addition, this also tweaks validation more generally to allow rules to be
async functions.
2019-04-25 14:29:10 +01:00
J. Ryan Stinnett
008ca3543b Migrate passwords on registration to new validation
In addition to migrating password fields, this also removes the remaining
support for old-style validation in registration now that all checks have been
converted.
2019-04-25 14:29:10 +01:00
J. Ryan Stinnett
aaf745ae2a Migrate phone number on registration to new validation 2019-04-25 14:29:09 +01:00
J. Ryan Stinnett
9064875312 Migrate email on registration to new validation 2019-04-25 14:29:09 +01:00
J. Ryan Stinnett
1cbb4be6f7 Add support for validating more strictly at submit time
When submitting a form, we want to validate more strictly to check for empty
values that might be required. A separate mode is used since we want to ignore
this issue when visiting a field one by one to enter data.

As an example, we convert the pre-existing logic for the username requirement
using this new support.
2019-04-25 14:29:09 +01:00
J. Ryan Stinnett
5d95c31875 Focus the first invalid field
This adjusts the submission step to focus the first invalid field and redisplay
validation. This also rearranges the older style field error handling on
registration which is slated for removal once we convert all fields to the new
style.
2019-04-25 14:29:09 +01:00
J. Ryan Stinnett
62a01e7a37 Track per-field validity with new-style validation
This updates the registration form to include the new-style validation state
when deciding whether the entire form is valid overall.

In addition, this tweaks the validation helper to take functions instead of
strings for translated text. This allows the validation helper to be create once
per component instead of once every render, which improves performance.
2019-04-25 14:29:09 +01:00
J. Ryan Stinnett
338d83ab55 Add validation feedback helper
This adds a general validation feedback mechanism for checking input values. An
initial example is wired up for the username input on registration.
2019-04-25 14:29:09 +01:00
Bruno Windels
fd6c594a8f put auth buttons in preview bar 2019-04-15 17:52:17 +02:00
J. Ryan Stinnett
ec51aee656 Remove refs from RegistrationForm
This aligns the code in `RegistrationForm` with other users of the `Field`
component. (In https://github.com/matrix-org/matrix-react-sdk/pull/2780, I had
thought that this code would be okay to leave alone, but I had missed the usage
of the `Field` value getter.)

Fixes https://github.com/vector-im/riot-web/issues/9172
2019-03-14 14:29:04 +00:00
J. Ryan Stinnett
e90d659e19 Remove validation demo code
This is example code from @ara4n's work in
https://github.com/matrix-org/matrix-react-sdk/pull/2550. We're not ready to
actually apply validation yet, so removing this for now.
2019-03-12 16:53:30 +00:00
J. Ryan Stinnett
d4dbba3938 Convert uncontrolled Field usages to controlled
As part of adding validation to Field, the logic is simpler to follow if we can
assume that all usages of Field use it as a controlled component, instead of
supporting both controlled and uncontrolled.

This converts the uncontrolled usages to controlled.
2019-03-12 16:17:21 +00:00
Matthew Hodgson
40f16fa310 adds validation for fields.
* renames RoomTooltip to be a generic Tooltip (which it is)
 * hooks it into Field to show validation results
 * adds onValidate to Field to let Field instances call an arbitrary validation function

Rebased from @ara4n's https://github.com/matrix-org/matrix-react-sdk/pull/2550
by @jryans. Subsequent commits revise and adapt this work.
2019-03-12 14:02:54 +00:00
J. Ryan Stinnett
d93e97bcd2 Remove span to regain explicit whitespace for country options
This change restores whitespace between the country name and prefix code in the
country dropdown.
2019-03-08 10:03:51 +00:00
J. Ryan Stinnett
df9888614b Normalize whitespace in PasswordLogin 2019-03-06 10:57:38 +00:00
J. Ryan Stinnett
bc54ea5623 Convert login type to Field component
This converts the login type Dropdown on the login flow to also use the Field
component so that every presents a similar visual style.
2019-03-05 17:58:42 +00:00
J. Ryan Stinnett
5a491ac053 Convert login inputs to Field component
As with other auth flows, this converts inputs on the login page to use the
Field component for consistent styling. The login type dropdown is left as-is
for now.
2019-03-05 17:58:42 +00:00
J. Ryan Stinnett
5b1d361577 Convert registration phone number to Field component
Now that we have prefix support in the Field component, we can also convert the
phone number with country dropdown on registration.
2019-03-05 17:58:42 +00:00
J. Ryan Stinnett
bfe120fbf4 Convert registration to Field component
This converts most fields in the registration form to use the Field component,
except for the phone number, which is a left as a separate task because of the
country dropdown menu.
2019-03-05 15:25:42 +00:00
J. Ryan Stinnett
4b340450b9 Rename Feather icon directory to feather-customised
These icons are based on Feather as the original source, but they have various
tweaks applied, such as stroke width, color, etc. Hopefully the tweaked name
makes this more obvious in the future.
2019-02-27 10:42:10 +00:00
J. Ryan Stinnett
1a89a4e87d Move logos out of feather dir
These clearly aren't from the Feather set.
2019-02-26 20:41:33 +00:00
J. Ryan Stinnett
426bdafe22
Merge pull request #2672 from jryans/password-validation
Report validity state of all registration fields on any change
2019-02-26 18:20:38 +00:00
Matthew Hodgson
ef3b729ff4 s/google.com/recaptcha.net/ as per https://developers.google.com/recaptcha/docs/faq#can-i-use-recaptcha-globally 2019-02-24 23:35:08 +00:00
J. Ryan Stinnett
86a375c7da Report validity state of all registration fields on any change
This passes the validity state of all fields to the consumer of
`RegistrationForm` via the `onValdiationChange` callback, instead of just the
most recent error.

In addition, we notify the consumer for any validation change, whether success
or failure. This allows old validation messages to be properly cleared. It also
allows the consumer to be aware of multiple validation errors and display the
next one after you have fixed the first.

Fixes https://github.com/vector-im/riot-web/issues/8769
2019-02-21 14:44:39 +00:00
J. Ryan Stinnett
acae2e9976 Wait until password confirm is non-empty
If password confirm is empty on blur, there's no reason to try validating it.
The user may just be tabbing through fields.
2019-02-21 14:44:32 +00:00
J. Ryan Stinnett
27abd7d507 Update validation order to match field order
Validation is meant to run in reverse order of the fields (so that the last
message emitted is for the first invalid field).
2019-02-21 11:35:55 +00:00
J. Ryan Stinnett
8b66b6bdb3 Relabel custom HS link on registration from 'Edit' to 'Change'
Fixes https://github.com/vector-im/riot-web/issues/8853
2019-02-21 11:03:50 +00:00
J. Ryan Stinnett
16b9688303
Merge pull request #2669 from matrix-org/jryans/default-server-name
Restores support for `default_server_name` which discovers URLs via `.well-known`
2019-02-21 10:38:15 +00:00
J. Ryan Stinnett
42bb3c4f40 Prevent default for forgot password link
The forgot password link should prevent default to avoid changing the URL's hash
state.
2019-02-20 17:33:59 +00:00
J. Ryan Stinnett
d220dd49ef Clarify that the account is a Matrix account
Now that auth flows can show a server name like `example.com` which might
delegate the HS to some other server, it could be confusing to see text like
"Sign in to example.com", especially if `example.com` runs an identity service,
uses SSO, has its own account system, or other things like this.

To clarify that we mean Matrix accounts, all auth flows are updated to talk in
terms of "<verb> your Matrix account on <server>".

Fixes part of
https://github.com/vector-im/riot-web/issues/8763#issuecomment-464823909.
2019-02-20 17:33:59 +00:00
J. Ryan Stinnett
f4b7180087 Display default server name in login
If a default server name is set and the current HS URL is the default HS URL,
we'll display that name in the "sign in to" text on the login form.

This can be a bit more user friendly, especially when the HS is delegated to
somewhere such as Modular, since you'll then see "example.com" instead of
"example.modular.im", which you have no direct relationship with as a user.

This is the key bit of https://github.com/vector-im/riot-web/issues/8763 for
login.
2019-02-20 17:33:59 +00:00
J. Ryan Stinnett
91f56a4447 Display default server name in registration
If a default server name is set and the current HS URL is the default HS URL,
we'll display that name in the "your account" text on the registration form.

This can be a bit more user friendly, especially when the HS is delegated to
somewhere such as Modular, since you'll then see "example.com" instead of
"example.modular.im", which you have no direct relationship with as a user.

This is the key bit of https://github.com/vector-im/riot-web/issues/8763 for
registration.
2019-02-20 12:17:51 +00:00
J. Ryan Stinnett
b846ac5800 Rework ServerTypeSelector to only emit changes after initial setup
`ServerTypeSelector` would call its `onChange` prop both at construction
(because it computed the default selected type and consumers might want to know)
as well as on actual user change. This ended up complicating consumer code, as
they want to differentiate between initial state and changes made by the user.

To simplify things, `ServerTypeSelector` now exports a function to compute the
server type from HS URL, which can be useful for setting its initially selected
type. The consumer now provides that type via a prop, and `onChange` is now only
called for actual user changes, simplifying the logic in `Registration` which
uses `ServerTypeSelector`.

In addition, some usages of `customHsUrl` vs. `defaultHsUrl` in `Registration`
are simplified to be `customHsUrl` only (since it already includes a fallback to
the default URL in `MatrixChat`).
2019-02-20 11:23:51 +00:00
J. Ryan Stinnett
9292a46db0 Update comment about Modular server type selection
Modular now sets `disable_custom_urls`, so the server type selector is not shown
for Modular-hosted Riot.
2019-02-20 10:24:03 +00:00
J. Ryan Stinnett
1cde4abe6a Improve text layout above captcha 2019-02-19 13:59:15 +00:00
J. Ryan Stinnett
3c156218da Allow captchas on Riot desktop builds 2019-02-19 13:57:31 +00:00
J. Ryan Stinnett
5b64543159
Typo
Co-Authored-By: dbkr <dbkr@users.noreply.github.com>
2019-02-13 19:05:17 +00:00
David Baker
0f4092dcbc Fix registration after clicking email link
We weren't correctly jumping into the appropriate bit of the registration
flow when coming in from an email link.

 * If we have client secret / sessionId, go straight to registration phase
 * Don't reset server URLs when the server type component tells us its
   initial value
 * Confusingly, pass the custom server URL as 'default server URL' to
   the custom server type, as this is what we want the inital section
   to be based on.

Fixes https://github.com/vector-im/riot-web/issues/8490
2019-02-13 18:12:34 +00:00
J. Ryan Stinnett
705c3248d4 Tweak embedded pages config name 2019-02-08 13:55:23 +00:00
J. Ryan Stinnett
7a15bb65c4 Tweak page URL defaulting 2019-02-08 13:53:17 +00:00
J. Ryan Stinnett
7238c713d7 Add language selector to bottom of welcome 2019-02-08 11:39:30 +00:00
J. Ryan Stinnett
1cf311da10 Place welcome content directly on glass 2019-02-08 11:26:47 +00:00
J. Ryan Stinnett
c587dcab92 Use separate config settings for each page 2019-02-07 17:16:02 +00:00
J. Ryan Stinnett
843f86fc1c Add separate welcome view 2019-02-07 16:25:09 +00:00
Travis Ralston
b2c161c7c1 Merge branch 'develop' into travis/settings/delete-the-old 2019-02-06 11:02:21 -07:00
J. Ryan Stinnett
02a20fa668 Tweak login wording to match design 2019-02-05 15:36:00 +00:00
Travis Ralston
eac50aa800 Remove old user and room settings
This takes out the old user and room settings, replacing the paths with the new dialog editions. The labs setting has been removed in order to support this change.

In addition to removing the old components outright, some older components which were only used by the settings pages have been removed. The exception is the ColorSettings component as it has a high chance of sticking around in the future.

Styles that were shared by the settings components have been broken out to dedicated sections, making it easier to remove the old styles entirely.

Some stability testing of the app has been performed to ensure the app still works, however given the scope of this change there is a possibility of some broken functionality.
2019-02-04 13:40:21 -07:00
J. Ryan Stinnett
4ed13e897a Hide registration fields that aren't used by any flow 2019-02-01 08:35:04 -06:00
J. Ryan Stinnett
ba50ef8445 Clarify required auth stages 2019-02-01 08:33:47 -06:00