mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 04:10:20 +08:00
feat: support resetting password on first login (#2980)
* feat: support reset password in first login * feat: disable needUpdatePassword when user haven't email and phone and mfa
This commit is contained in:
@ -414,6 +414,7 @@ class App extends Component {
|
||||
<Layout id="parent-area">
|
||||
<ManagementPage
|
||||
account={this.state.account}
|
||||
application={this.state.application}
|
||||
uri={this.state.uri}
|
||||
themeData={this.state.themeData}
|
||||
themeAlgorithm={this.state.themeAlgorithm}
|
||||
|
@ -108,8 +108,8 @@ class EntryPage extends React.Component {
|
||||
<Route exact path="/signup/oauth/authorize" render={(props) => <SignupPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />} />
|
||||
<Route exact path="/login/oauth/authorize" render={(props) => <LoginPage {...this.props} application={this.state.application} type={"code"} mode={"signin"} onUpdateApplication={onUpdateApplication} {...props} />} />
|
||||
<Route exact path="/login/saml/authorize/:owner/:applicationName" render={(props) => <LoginPage {...this.props} application={this.state.application} type={"saml"} mode={"signin"} onUpdateApplication={onUpdateApplication} {...props} />} />
|
||||
<Route exact path="/forget" render={(props) => this.renderHomeIfLoggedIn(<SelfForgetPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />)} />
|
||||
<Route exact path="/forget/:applicationName" render={(props) => this.renderHomeIfLoggedIn(<ForgetPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />)} />
|
||||
<Route exact path="/forget" render={(props) => <SelfForgetPage {...this.props} account={this.props.account} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />} />
|
||||
<Route exact path="/forget/:applicationName" render={(props) => <ForgetPage {...this.props} account={this.props.account} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />} />
|
||||
<Route exact path="/prompt" render={(props) => this.renderLoginIfNotLoggedIn(<PromptPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />)} />
|
||||
<Route exact path="/prompt/:applicationName" render={(props) => this.renderLoginIfNotLoggedIn(<PromptPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />)} />
|
||||
<Route exact path="/result" render={(props) => this.renderHomeIfLoggedIn(<ResultPage {...this.props} application={this.state.application} onUpdateApplication={onUpdateApplication} {...props} />)} />
|
||||
|
@ -328,6 +328,8 @@ function ManagementPage(props) {
|
||||
return <Redirect to="/login" />;
|
||||
} else if (props.account === undefined) {
|
||||
return null;
|
||||
} else if (props.account.needUpdatePassword) {
|
||||
return <Redirect to={"/forget/" + props.application.name} />;
|
||||
} else {
|
||||
return component;
|
||||
}
|
||||
|
@ -1026,6 +1026,19 @@ class UserEditPage extends React.Component {
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
} else if (accountItem.name === "Need update password") {
|
||||
return (
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("user:Need update password"), i18next.t("user:Need update password - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={(Setting.isMobile()) ? 22 : 2} >
|
||||
<Switch disabled={(!this.state.user.phone) && (!this.state.user.email) && (!this.state.user.mfaProps)} checked={this.state.user.needUpdatePassword} onChange={checked => {
|
||||
this.updateUserField("needUpdatePassword", checked);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,21 +153,37 @@ class AuthCallback extends React.Component {
|
||||
// OAuth
|
||||
const oAuthParams = Util.getOAuthGetParameters(innerParams);
|
||||
const concatChar = oAuthParams?.redirectUri?.includes("?") ? "&" : "?";
|
||||
const signinUrl = localStorage.getItem("signinUrl");
|
||||
|
||||
AuthBackend.login(body, oAuthParams)
|
||||
.then((res) => {
|
||||
if (res.status === "ok") {
|
||||
const responseType = this.getResponseType();
|
||||
if (responseType === "login") {
|
||||
if (res.data2) {
|
||||
sessionStorage.setItem("signinUrl", signinUrl);
|
||||
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
|
||||
return;
|
||||
}
|
||||
Setting.showMessage("success", "Logged in successfully");
|
||||
// Setting.goToLinkSoft(this, "/");
|
||||
|
||||
const link = Setting.getFromLink();
|
||||
Setting.goToLink(link);
|
||||
} else if (responseType === "code") {
|
||||
if (res.data2) {
|
||||
sessionStorage.setItem("signinUrl", signinUrl);
|
||||
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
|
||||
return;
|
||||
}
|
||||
const code = res.data;
|
||||
Setting.goToLink(`${oAuthParams.redirectUri}${concatChar}code=${code}&state=${oAuthParams.state}`);
|
||||
// Setting.showMessage("success", `Authorization code: ${res.data}`);
|
||||
} else if (responseType === "token" || responseType === "id_token") {
|
||||
if (res.data2) {
|
||||
sessionStorage.setItem("signinUrl", signinUrl);
|
||||
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
|
||||
return;
|
||||
}
|
||||
const token = res.data;
|
||||
Setting.goToLink(`${oAuthParams.redirectUri}${concatChar}${responseType}=${token}&state=${oAuthParams.state}&token_type=bearer`);
|
||||
} else if (responseType === "link") {
|
||||
@ -181,6 +197,11 @@ class AuthCallback extends React.Component {
|
||||
relayState: oAuthParams.relayState,
|
||||
});
|
||||
} else {
|
||||
if (res.data2.needUpdatePassword) {
|
||||
sessionStorage.setItem("signinUrl", signinUrl);
|
||||
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
|
||||
return;
|
||||
}
|
||||
const SAMLResponse = res.data;
|
||||
const redirectUri = res.data2.redirectUrl;
|
||||
Setting.goToLink(`${redirectUri}?SAMLResponse=${encodeURIComponent(SAMLResponse)}&RelayState=${oAuthParams.relayState}`);
|
||||
|
@ -35,8 +35,8 @@ class ForgetPage extends React.Component {
|
||||
classes: props,
|
||||
applicationName: props.applicationName ?? props.match.params?.applicationName,
|
||||
msg: null,
|
||||
name: "",
|
||||
username: "",
|
||||
name: props.account ? props.account.name : "",
|
||||
username: props.account ? props.account.name : "",
|
||||
phone: "",
|
||||
email: "",
|
||||
dest: "",
|
||||
@ -44,7 +44,6 @@ class ForgetPage extends React.Component {
|
||||
verifyType: "", // "email", "phone"
|
||||
current: 0,
|
||||
};
|
||||
|
||||
this.form = React.createRef();
|
||||
}
|
||||
|
||||
@ -205,6 +204,7 @@ class ForgetPage extends React.Component {
|
||||
initialValues={{
|
||||
application: application.name,
|
||||
organization: application.organization,
|
||||
username: this.state.name,
|
||||
}}
|
||||
style={{width: "300px"}}
|
||||
size="large"
|
||||
@ -488,7 +488,7 @@ class ForgetPage extends React.Component {
|
||||
<Row>
|
||||
<Col span={24}>
|
||||
<div style={{textAlign: "center", fontSize: "28px"}}>
|
||||
{i18next.t("forget:Retrieve password")}
|
||||
{i18next.t("forget:Reset password")}
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
|
@ -68,6 +68,8 @@ class LoginPage extends React.Component {
|
||||
this.state.applicationName = props.match?.params?.casApplicationName;
|
||||
}
|
||||
|
||||
localStorage.setItem("signinUrl", window.location.href);
|
||||
|
||||
this.form = React.createRef();
|
||||
}
|
||||
|
||||
@ -300,6 +302,12 @@ class LoginPage extends React.Component {
|
||||
return;
|
||||
}
|
||||
|
||||
if (resp.data2) {
|
||||
sessionStorage.setItem("signinUrl", window.location.href);
|
||||
Setting.goToLinkSoft(ths, `/forget/${application.name}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Setting.hasPromptPage(application)) {
|
||||
AuthBackend.getAccount()
|
||||
.then((res) => {
|
||||
@ -442,15 +450,27 @@ class LoginPage extends React.Component {
|
||||
const responseType = values["type"];
|
||||
|
||||
if (responseType === "login") {
|
||||
if (res.data2) {
|
||||
sessionStorage.setItem("signinUrl", window.location.href);
|
||||
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
|
||||
}
|
||||
Setting.showMessage("success", i18next.t("application:Logged in successfully"));
|
||||
this.props.onLoginSuccess();
|
||||
} else if (responseType === "code") {
|
||||
this.postCodeLoginAction(res);
|
||||
} else if (responseType === "token" || responseType === "id_token") {
|
||||
if (res.data2) {
|
||||
sessionStorage.setItem("signinUrl", window.location.href);
|
||||
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
|
||||
}
|
||||
const amendatoryResponseType = responseType === "token" ? "access_token" : responseType;
|
||||
const accessToken = res.data;
|
||||
Setting.goToLink(`${oAuthParams.redirectUri}#${amendatoryResponseType}=${accessToken}&state=${oAuthParams.state}&token_type=bearer`);
|
||||
} else if (responseType === "saml") {
|
||||
if (res.data2.needUpdatePassword) {
|
||||
sessionStorage.setItem("signinUrl", window.location.href);
|
||||
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
|
||||
}
|
||||
if (res.data2.method === "POST") {
|
||||
this.setState({
|
||||
samlResponse: res.data,
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Nächster Schritt",
|
||||
"Please input your username!": "Bitte gib deinen Benutzernamen ein!",
|
||||
"Reset": "Zurücksetzen",
|
||||
"Retrieve password": "Passwort abrufen",
|
||||
"Reset password": "Passwort abrufen",
|
||||
"Unknown forget type": "Unbekannter Vergesslichkeitstyp",
|
||||
"Verify": "überprüfen"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Verwaltete Konten",
|
||||
"Modify password...": "Passwort ändern...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Neue E-Mail",
|
||||
"New Password": "Neues Passwort",
|
||||
"New User": "Neuer Benutzer",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Siguiente paso",
|
||||
"Please input your username!": "¡Por favor, ingrese su nombre de usuario!",
|
||||
"Reset": "Restablecer",
|
||||
"Retrieve password": "Recuperar contraseña",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Tipo de olvido desconocido",
|
||||
"Verify": "Verificar"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Cuentas gestionadas",
|
||||
"Modify password...": "Modificar contraseña...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Nuevo correo electrónico",
|
||||
"New Password": "Nueva contraseña",
|
||||
"New User": "Nuevo Usuario",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Étape suivante",
|
||||
"Please input your username!": "Veuillez saisir votre identifiant !",
|
||||
"Reset": "Réinitialiser",
|
||||
"Retrieve password": "Récupérer le mot de passe",
|
||||
"Reset password": "Récupérer le mot de passe",
|
||||
"Unknown forget type": "Type d'oubli inconnu",
|
||||
"Verify": "Vérifier"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Comptes gérés",
|
||||
"Modify password...": "Modifier le mot de passe...",
|
||||
"Multi-factor authentication": "Authentification multifacteur",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Nouvelle adresse e-mail",
|
||||
"New Password": "Nouveau mot de passe",
|
||||
"New User": "Nouveau compte",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Langkah selanjutnya",
|
||||
"Please input your username!": "Silakan masukkan nama pengguna Anda!",
|
||||
"Reset": "Menyetel-ulang",
|
||||
"Retrieve password": "Mengambil password",
|
||||
"Reset password": "Mengambil password",
|
||||
"Unknown forget type": "Tipe yang tidak diketahui terlupakan",
|
||||
"Verify": "Memverifikasi"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Akun yang dikelola",
|
||||
"Modify password...": "Mengubah kata sandi...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Email baru",
|
||||
"New Password": "Kata Sandi Baru",
|
||||
"New User": "Pengguna Baru",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "次のステップ",
|
||||
"Please input your username!": "ユーザー名を入力してください!",
|
||||
"Reset": "リセット",
|
||||
"Retrieve password": "パスワードの取得",
|
||||
"Reset password": "パスワードの取得",
|
||||
"Unknown forget type": "未知の忘却タイプ",
|
||||
"Verify": "検証"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "管理アカウント",
|
||||
"Modify password...": "パスワードを変更する...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "新しいメール",
|
||||
"New Password": "新しいパスワード",
|
||||
"New User": "新しいユーザー",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "다음 단계",
|
||||
"Please input your username!": "사용자 이름을 입력하세요!",
|
||||
"Reset": "리셋",
|
||||
"Retrieve password": "비밀번호를 복구하세요",
|
||||
"Reset password": "비밀번호를 복구하세요",
|
||||
"Unknown forget type": "미지의 잊혀진 유형",
|
||||
"Verify": "검증하다"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "관리 계정",
|
||||
"Modify password...": "비밀번호 수정하기...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "새 이메일",
|
||||
"New Password": "새로운 비밀번호",
|
||||
"New User": "새로운 사용자",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Próxima Etapa",
|
||||
"Please input your username!": "Por favor, insira seu nome de usuário!",
|
||||
"Reset": "Redefinir",
|
||||
"Retrieve password": "Recuperar senha",
|
||||
"Reset password": "Recuperar senha",
|
||||
"Unknown forget type": "Tipo de recuperação desconhecido",
|
||||
"Verify": "Verificar"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Contas gerenciadas",
|
||||
"Modify password...": "Modificar senha...",
|
||||
"Multi-factor authentication": "Autenticação de vários fatores",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Novo E-mail",
|
||||
"New Password": "Nova Senha",
|
||||
"New User": "Novo Usuário",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Следующий шаг",
|
||||
"Please input your username!": "Пожалуйста, введите своё имя пользователя!",
|
||||
"Reset": "Сбросить",
|
||||
"Retrieve password": "Восстановить пароль",
|
||||
"Reset password": "Восстановить пароль",
|
||||
"Unknown forget type": "Неизвестный забытый тип",
|
||||
"Verify": "Проверить"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Управляемые аккаунты",
|
||||
"Modify password...": "Изменить пароль...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Новое электронное письмо",
|
||||
"New Password": "Новый пароль",
|
||||
"New User": "Новый пользователь",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Next Step",
|
||||
"Please input your username!": "Please input your username!",
|
||||
"Reset": "Reset",
|
||||
"Retrieve password": "Retrieve password",
|
||||
"Reset password": "Reset password",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Verify"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Sonraki adım",
|
||||
"Please input your username!": "Lütfen kullanıcı adınızı girin",
|
||||
"Reset": "Sıfırla",
|
||||
"Retrieve password": "Şifre kurtar",
|
||||
"Reset password": "Şifre kurtar",
|
||||
"Unknown forget type": "Unknown forget type",
|
||||
"Verify": "Doğrula"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Managed accounts",
|
||||
"Modify password...": "Modify password...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "New Email",
|
||||
"New Password": "New Password",
|
||||
"New User": "New User",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Наступний крок",
|
||||
"Please input your username!": "Будь ласка, введіть своє ім'я користувача!",
|
||||
"Reset": "Скинути",
|
||||
"Retrieve password": "Отримати пароль",
|
||||
"Reset password": "Отримати пароль",
|
||||
"Unknown forget type": "Невідомий забутий тип",
|
||||
"Verify": "Підтвердити"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Керовані облікові записи",
|
||||
"Modify password...": "Змінити пароль...",
|
||||
"Multi-factor authentication": "Багатофакторна аутентифікація",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Нова електронна пошта",
|
||||
"New Password": "Новий пароль",
|
||||
"New User": "Новий користувач",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "Bước tiếp theo",
|
||||
"Please input your username!": "Vui lòng nhập tên đăng nhập của bạn!",
|
||||
"Reset": "Đặt lại",
|
||||
"Retrieve password": "Truy xuất mật khẩu",
|
||||
"Reset password": "Truy xuất mật khẩu",
|
||||
"Unknown forget type": "Loại quên chưa biết",
|
||||
"Verify": "Xác thực"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "Quản lý tài khoản",
|
||||
"Modify password...": "Sửa đổi mật khẩu...",
|
||||
"Multi-factor authentication": "Multi-factor authentication",
|
||||
"Need update password": "Need update password",
|
||||
"Need update password - Tooltip": "Force user update password after login",
|
||||
"New Email": "Email mới",
|
||||
"New Password": "Mật khẩu mới",
|
||||
"New User": "Người dùng mới",
|
||||
|
@ -166,7 +166,7 @@
|
||||
"Next Step": "下一步",
|
||||
"Please input your username!": "请输入您的用户名!",
|
||||
"Reset": "重置",
|
||||
"Retrieve password": "找回密码",
|
||||
"Reset password": "重置密码",
|
||||
"Unknown forget type": "未知的忘记密码类型",
|
||||
"Verify": "验证"
|
||||
},
|
||||
@ -1130,6 +1130,8 @@
|
||||
"Managed accounts": "托管账户",
|
||||
"Modify password...": "编辑密码...",
|
||||
"Multi-factor authentication": "多因素认证",
|
||||
"Need update password": "需要更新密码",
|
||||
"Need update password - Tooltip": "强制用户在登录后更新密码",
|
||||
"New Email": "新邮箱",
|
||||
"New Password": "新密码",
|
||||
"New User": "添加用户",
|
||||
|
@ -102,6 +102,7 @@ class AccountTable extends React.Component {
|
||||
{name: "Is admin", label: i18next.t("user:Is admin")},
|
||||
{name: "Is forbidden", label: i18next.t("user:Is forbidden")},
|
||||
{name: "Is deleted", label: i18next.t("user:Is deleted")},
|
||||
{name: "Need update password", label: i18next.t("user:Need update password")},
|
||||
{name: "Multi-factor authentication", label: i18next.t("user:Multi-factor authentication")},
|
||||
{name: "WebAuthn credentials", label: i18next.t("user:WebAuthn credentials")},
|
||||
{name: "Managed accounts", label: i18next.t("user:Managed accounts")},
|
||||
|
Reference in New Issue
Block a user