Compare commits

..

4 Commits

Author SHA1 Message Date
Yaodong Yu
f35a5f9a47 feat: fix issue that admin cannot enable MFA for user (#2702) 2024-02-14 23:29:04 +08:00
Yang Luo
7481b229a4 feat: show domain field for MinIO storage provider 2024-02-14 13:54:17 +08:00
Yang Luo
39e485ae82 Fix SigninTable issue 2024-02-14 12:20:03 +08:00
Yang Luo
764c64e67c Fix SigninTable CSS 2024-02-14 12:10:30 +08:00
6 changed files with 40 additions and 31 deletions

View File

@@ -110,7 +110,7 @@ func (c *ApiController) MfaSetupVerify() {
return
}
config.Secret = secret.(string)
} else if mfaType == object.EmailType || mfaType == object.SmsType {
} else if mfaType == object.SmsType {
dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing")
@@ -123,6 +123,13 @@ func (c *ApiController) MfaSetupVerify() {
return
}
config.CountryCode = countryCode.(string)
} else if mfaType == object.EmailType {
dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing")
return
}
config.Secret = dest.(string)
}
mfaUtil := object.GetMfaUtil(mfaType, config)
@@ -175,19 +182,30 @@ func (c *ApiController) MfaSetupEnable() {
return
}
config.Secret = secret.(string)
} else if mfaType == object.EmailType || mfaType == object.SmsType {
dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing")
return
} else if mfaType == object.EmailType {
if user.Email == "" {
dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing")
return
}
user.Email = dest.(string)
}
config.Secret = dest.(string)
countryCode := c.GetSession(MfaCountryCodeSession)
if countryCode == nil {
c.ResponseError("country code is missing")
return
} else if mfaType == object.SmsType {
if user.Phone == "" {
dest := c.GetSession(MfaDestSession)
if dest == nil {
c.ResponseError("destination is missing")
return
}
user.Phone = dest.(string)
countryCode := c.GetSession(MfaCountryCodeSession)
if countryCode == nil {
c.ResponseError("country code is missing")
return
}
user.CountryCode = countryCode.(string)
}
config.CountryCode = countryCode.(string)
}
recoveryCodes := c.GetSession(MfaRecoveryCodesSession)
if recoveryCodes == nil {

View File

@@ -223,7 +223,7 @@ func extendApplicationWithSigninItems(application *Application) (err error) {
Visible: true,
Label: "\n<style>\n .login-logo-box {\n }\n<style>\n",
Placeholder: "",
Rule: "none",
Rule: "None",
}
application.SigninItems = append(application.SigninItems, signinItem)
signinItem = &SigninItem{

View File

@@ -52,21 +52,10 @@ func (mfa *SmsMfa) Enable(user *User) error {
if mfa.MfaType == SmsType {
user.MfaPhoneEnabled = true
columns = append(columns, "mfa_phone_enabled")
if user.Phone == "" {
user.Phone = mfa.Secret
user.CountryCode = mfa.CountryCode
columns = append(columns, "phone", "country_code")
}
columns = append(columns, "mfa_phone_enabled", "phone", "country_code")
} else if mfa.MfaType == EmailType {
user.MfaEmailEnabled = true
columns = append(columns, "mfa_email_enabled")
if user.Email == "" {
user.Email = mfa.Secret
columns = append(columns, "email")
}
columns = append(columns, "mfa_email_enabled", "email")
}
_, err := UpdateUser(user.GetId(), user, columns, false)

View File

@@ -876,7 +876,7 @@ class ProviderEditPage extends React.Component {
</Col>
</Row>
)}
{["Custom HTTP SMS", "MinIO", "Google Cloud Storage", "Qiniu Cloud Kodo", "Synology"].includes(this.state.provider.type) ? null : (
{["Custom HTTP SMS", "Google Cloud Storage", "Qiniu Cloud Kodo", "Synology"].includes(this.state.provider.type) ? null : (
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={2}>
{Setting.getLabel(i18next.t("provider:Domain"), i18next.t("provider:Domain - Tooltip"))} :

View File

@@ -655,7 +655,7 @@ class LoginPage extends React.Component {
);
} else if (signinItem.name === "Providers") {
const showForm = Setting.isPasswordEnabled(application) || Setting.isCodeSigninEnabled(application) || Setting.isWebAuthnEnabled(application) || Setting.isLdapEnabled(application);
if (signinItem.rule === "None") {
if (signinItem.rule === "None" || signinItem.rule === "") {
signinItem.rule = showForm ? "small" : "big";
}
@@ -782,7 +782,9 @@ class LoginPage extends React.Component {
:
</div>
<br />
{application.signinItems.map(signinItem => signinItem.name === "ThirdParty" || signinItem.name === "Footer" ? this.renderFormItem(application, signinItem) : null)}
{
application?.signinItems.map(signinItem => signinItem.name === "Providers" || signinItem.name === "Signup link" ? this.renderFormItem(application, signinItem) : null)
}
</div>
);
}

View File

@@ -195,7 +195,7 @@ class SigninTable extends React.Component {
/>
</div>
} title={i18next.t("application:CSS style")} trigger="click">
<Input value={text} style={{marginBottom: "10px"}} onChange={e => {
<Input value={text} onChange={e => {
this.updateField(table, index, "label", e.target.value);
}} />
</Popover>
@@ -229,7 +229,7 @@ class SigninTable extends React.Component {
width: "155px",
render: (text, record, index) => {
let options = [];
if (record.name === "ThirdParty") {
if (record.name === "Providers") {
options = [
{id: "big", name: i18next.t("application:Big icon")},
{id: "small", name: i18next.t("application:Small icon")},