diff --git a/web/src/auth/LoginPage.js b/web/src/auth/LoginPage.js
index aa76eb8a..30016e7b 100644
--- a/web/src/auth/LoginPage.js
+++ b/web/src/auth/LoginPage.js
@@ -49,7 +49,6 @@ class LoginPage extends React.Component {
username: null,
validEmailOrPhone: false,
validEmail: false,
- loginMethod: "password",
enableCaptchaModal: CaptchaRule.Never,
openCaptchaModal: false,
verifyCaptcha: undefined,
@@ -83,6 +82,8 @@ class LoginPage extends React.Component {
componentDidUpdate(prevProps, prevState, snapshot) {
if (prevProps.application !== this.props.application) {
+ this.setState({loginMethod: this.getDefaultLoginMethod(this.props.application)});
+
const captchaProviderItems = this.getCaptchaProviderItems(this.props.application);
if (captchaProviderItems) {
if (captchaProviderItems.some(providerItem => providerItem.rule === "Always")) {
@@ -187,6 +188,20 @@ class LoginPage extends React.Component {
return this.props.application;
}
+ getDefaultLoginMethod(application) {
+ if (application.enablePassword) {
+ return "password";
+ }
+ if (application.enableCodeSignin) {
+ return "verificationCode";
+ }
+ if (application.enableWebAuthn) {
+ return "webAuthn";
+ }
+
+ return "password";
+ }
+
onUpdateAccount(account) {
this.props.onUpdateAccount(account);
}
@@ -430,7 +445,8 @@ class LoginPage extends React.Component {
);
}
- if (application.enablePassword) {
+ const showForm = application.enablePassword || application.enableCodeSignin || application.enableWebAuthn;
+ if (showForm) {
let loginWidth = 320;
if (Setting.getLanguage() === "fr") {
loginWidth += 20;
@@ -515,7 +531,6 @@ class LoginPage extends React.Component {
id="input"
prefix={