mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-22 18:25:47 +08:00
feat: add the FailedSigninLimit
and FailedSigninfrozenTime
configuration options to the application (#2552)
Add configuration items to the application to limit the number of logins and the login wait time after the maximum number of errors is reached feat: #2272 fix: fixed the issue where the token parameter could be set to a negative value
This commit is contained in:
parent
f8905ae64c
commit
5499e62d7f
@ -110,6 +110,14 @@ func (c *ApiController) GetApplication() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 as an initialization value, corresponding to the default configuration parameters
|
||||||
|
if application.FailedSigninLimit == 0 {
|
||||||
|
application.FailedSigninLimit = object.DefaultFailedSigninLimit
|
||||||
|
}
|
||||||
|
if application.FailedSigninfrozenTime == 0 {
|
||||||
|
application.FailedSigninfrozenTime = object.DefaultFailedSigninfrozenTime
|
||||||
|
}
|
||||||
|
|
||||||
c.ResponseOk(object.GetMaskedApplication(application, userId))
|
c.ResponseOk(object.GetMaskedApplication(application, userId))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -946,8 +946,14 @@ func (c *ApiController) GetCaptchaStatus() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
failedSigninLimit, _, err := object.GetFailedSigninConfigByUser(user)
|
||||||
|
if err != nil {
|
||||||
|
c.ResponseError(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var captchaEnabled bool
|
var captchaEnabled bool
|
||||||
if user != nil && user.SigninWrongTimes >= object.SigninWrongTimesLimit {
|
if user != nil && user.SigninWrongTimes >= failedSigninLimit {
|
||||||
captchaEnabled = true
|
captchaEnabled = true
|
||||||
}
|
}
|
||||||
c.ResponseOk(captchaEnabled)
|
c.ResponseOk(captchaEnabled)
|
||||||
|
@ -104,7 +104,9 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"redirectUris": [""],
|
"redirectUris": [""],
|
||||||
"expireInHours": 168
|
"expireInHours": 168,
|
||||||
|
"failedSigninLimit": 5,
|
||||||
|
"failedSigninfrozenTime": 15
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"users": [
|
"users": [
|
||||||
|
@ -90,6 +90,9 @@ type Application struct {
|
|||||||
FormOffset int `json:"formOffset"`
|
FormOffset int `json:"formOffset"`
|
||||||
FormSideHtml string `xorm:"mediumtext" json:"formSideHtml"`
|
FormSideHtml string `xorm:"mediumtext" json:"formSideHtml"`
|
||||||
FormBackgroundUrl string `xorm:"varchar(200)" json:"formBackgroundUrl"`
|
FormBackgroundUrl string `xorm:"varchar(200)" json:"formBackgroundUrl"`
|
||||||
|
|
||||||
|
FailedSigninLimit int `json:"failedSigninLimit"`
|
||||||
|
FailedSigninfrozenTime int `json:"failedSigninfrozenTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetApplicationCount(owner, field, value string) (int64, error) {
|
func GetApplicationCount(owner, field, value string) (int64, error) {
|
||||||
|
@ -28,8 +28,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SigninWrongTimesLimit = 5
|
DefaultFailedSigninLimit = 5
|
||||||
LastSignWrongTimeDuration = time.Minute * 15
|
// DefaultFailedSigninfrozenTime The unit of frozen time is minutes
|
||||||
|
DefaultFailedSigninfrozenTime = 15
|
||||||
)
|
)
|
||||||
|
|
||||||
func CheckUserSignup(application *Application, organization *Organization, form *form.AuthForm, lang string) string {
|
func CheckUserSignup(application *Application, organization *Organization, form *form.AuthForm, lang string) string {
|
||||||
@ -143,10 +144,15 @@ func CheckUserSignup(application *Application, organization *Organization, form
|
|||||||
}
|
}
|
||||||
|
|
||||||
func checkSigninErrorTimes(user *User, lang string) error {
|
func checkSigninErrorTimes(user *User, lang string) error {
|
||||||
if user.SigninWrongTimes >= SigninWrongTimesLimit {
|
failedSigninLimit, failedSigninfrozenTime, err := GetFailedSigninConfigByUser(user)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if user.SigninWrongTimes >= failedSigninLimit {
|
||||||
lastSignWrongTime, _ := time.Parse(time.RFC3339, user.LastSigninWrongTime)
|
lastSignWrongTime, _ := time.Parse(time.RFC3339, user.LastSigninWrongTime)
|
||||||
passedTime := time.Now().UTC().Sub(lastSignWrongTime)
|
passedTime := time.Now().UTC().Sub(lastSignWrongTime)
|
||||||
minutes := int(LastSignWrongTimeDuration.Minutes() - passedTime.Minutes())
|
minutes := failedSigninfrozenTime - int(passedTime.Minutes())
|
||||||
|
|
||||||
// deny the login if the error times is greater than the limit and the last login time is less than the duration
|
// deny the login if the error times is greater than the limit and the last login time is less than the duration
|
||||||
if minutes > 0 {
|
if minutes > 0 {
|
||||||
@ -479,7 +485,14 @@ func CheckToEnableCaptcha(application *Application, organization, username strin
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
return user != nil && user.SigninWrongTimes >= SigninWrongTimesLimit, nil
|
|
||||||
|
var failedSigninLimit int
|
||||||
|
if application.FailedSigninLimit == 0 {
|
||||||
|
failedSigninLimit = 5
|
||||||
|
} else {
|
||||||
|
failedSigninLimit = application.FailedSigninLimit
|
||||||
|
}
|
||||||
|
return user != nil && user.SigninWrongTimes >= failedSigninLimit, nil
|
||||||
}
|
}
|
||||||
return providerItem.Rule == "Always", nil
|
return providerItem.Rule == "Always", nil
|
||||||
}
|
}
|
||||||
|
@ -47,18 +47,42 @@ func resetUserSigninErrorTimes(user *User) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetFailedSigninConfigByUser(user *User) (int, int, error) {
|
||||||
|
application, err := GetApplicationByUser(user)
|
||||||
|
if err != nil {
|
||||||
|
return 0, 0, err
|
||||||
|
}
|
||||||
|
failedSigninLimit := application.FailedSigninLimit
|
||||||
|
failedSigninfrozenTime := application.FailedSigninfrozenTime
|
||||||
|
|
||||||
|
// 0 as an initialization value, corresponding to the default configuration parameters
|
||||||
|
if failedSigninLimit == 0 {
|
||||||
|
failedSigninLimit = DefaultFailedSigninLimit
|
||||||
|
}
|
||||||
|
if failedSigninfrozenTime == 0 {
|
||||||
|
failedSigninfrozenTime = DefaultFailedSigninfrozenTime
|
||||||
|
}
|
||||||
|
|
||||||
|
return failedSigninLimit, failedSigninfrozenTime, nil
|
||||||
|
}
|
||||||
|
|
||||||
func recordSigninErrorInfo(user *User, lang string, options ...bool) error {
|
func recordSigninErrorInfo(user *User, lang string, options ...bool) error {
|
||||||
enableCaptcha := false
|
enableCaptcha := false
|
||||||
if len(options) > 0 {
|
if len(options) > 0 {
|
||||||
enableCaptcha = options[0]
|
enableCaptcha = options[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
failedSigninLimit, failedSigninfrozenTime, errSignin := GetFailedSigninConfigByUser(user)
|
||||||
|
if errSignin != nil {
|
||||||
|
return errSignin
|
||||||
|
}
|
||||||
|
|
||||||
// increase failed login count
|
// increase failed login count
|
||||||
if user.SigninWrongTimes < SigninWrongTimesLimit {
|
if user.SigninWrongTimes < failedSigninLimit {
|
||||||
user.SigninWrongTimes++
|
user.SigninWrongTimes++
|
||||||
}
|
}
|
||||||
|
|
||||||
if user.SigninWrongTimes >= SigninWrongTimesLimit {
|
if user.SigninWrongTimes >= failedSigninLimit {
|
||||||
// record the latest failed login time
|
// record the latest failed login time
|
||||||
user.LastSigninWrongTime = time.Now().UTC().Format(time.RFC3339)
|
user.LastSigninWrongTime = time.Now().UTC().Format(time.RFC3339)
|
||||||
}
|
}
|
||||||
@ -69,7 +93,7 @@ func recordSigninErrorInfo(user *User, lang string, options ...bool) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
leftChances := SigninWrongTimesLimit - user.SigninWrongTimes
|
leftChances := failedSigninLimit - user.SigninWrongTimes
|
||||||
if leftChances == 0 && enableCaptcha {
|
if leftChances == 0 && enableCaptcha {
|
||||||
return fmt.Errorf(i18n.Translate(lang, "check:password or code is incorrect"))
|
return fmt.Errorf(i18n.Translate(lang, "check:password or code is incorrect"))
|
||||||
} else if leftChances >= 0 {
|
} else if leftChances >= 0 {
|
||||||
@ -77,5 +101,5 @@ func recordSigninErrorInfo(user *User, lang string, options ...bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// don't show the chance error message if the user has no chance left
|
// don't show the chance error message if the user has no chance left
|
||||||
return fmt.Errorf(i18n.Translate(lang, "check:You have entered the wrong password or code too many times, please wait for %d minutes and try again"), int(LastSignWrongTimeDuration.Minutes()))
|
return fmt.Errorf(i18n.Translate(lang, "check:You have entered the wrong password or code too many times, please wait for %d minutes and try again"), failedSigninfrozenTime)
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import {Button, Card, Col, ConfigProvider, Input, List, Popover, Radio, Result, Row, Select, Space, Switch, Upload} from "antd";
|
import {Button, Card, Col, ConfigProvider, Input, InputNumber, List, Popover, Radio, Result, Row, Select, Space, Switch, Upload} from "antd";
|
||||||
import {CopyOutlined, LinkOutlined, UploadOutlined} from "@ant-design/icons";
|
import {CopyOutlined, LinkOutlined, UploadOutlined} from "@ant-design/icons";
|
||||||
import * as ApplicationBackend from "./backend/ApplicationBackend";
|
import * as ApplicationBackend from "./backend/ApplicationBackend";
|
||||||
import * as CertBackend from "./backend/CertBackend";
|
import * as CertBackend from "./backend/CertBackend";
|
||||||
@ -199,7 +199,7 @@ class ApplicationEditPage extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
parseApplicationField(key, value) {
|
parseApplicationField(key, value) {
|
||||||
if (["expireInHours", "refreshExpireInHours", "offset"].includes(key)) {
|
if (["offset"].includes(key)) {
|
||||||
value = Setting.myParseInt(value);
|
value = Setting.myParseInt(value);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
@ -394,8 +394,8 @@ class ApplicationEditPage extends React.Component {
|
|||||||
{Setting.getLabel(i18next.t("application:Token expire"), i18next.t("application:Token expire - Tooltip"))} :
|
{Setting.getLabel(i18next.t("application:Token expire"), i18next.t("application:Token expire - Tooltip"))} :
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={22} >
|
<Col span={22} >
|
||||||
<Input style={{width: "150px"}} value={this.state.application.expireInHours} suffix="Hours" onChange={e => {
|
<InputNumber style={{width: "150px"}} value={this.state.application.expireInHours} min={1} step={1} precision={0} addonAfter="Hours" onChange={value => {
|
||||||
this.updateApplicationField("expireInHours", e.target.value);
|
this.updateApplicationField("expireInHours", value);
|
||||||
}} />
|
}} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
@ -404,8 +404,28 @@ class ApplicationEditPage extends React.Component {
|
|||||||
{Setting.getLabel(i18next.t("application:Refresh token expire"), i18next.t("application:Refresh token expire - Tooltip"))} :
|
{Setting.getLabel(i18next.t("application:Refresh token expire"), i18next.t("application:Refresh token expire - Tooltip"))} :
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={22} >
|
<Col span={22} >
|
||||||
<Input style={{width: "150px"}} value={this.state.application.refreshExpireInHours} suffix="Hours" onChange={e => {
|
<InputNumber style={{width: "150px"}} value={this.state.application.refreshExpireInHours} min={1} step={1} precision={0} addonAfter="Hours" onChange={value => {
|
||||||
this.updateApplicationField("refreshExpireInHours", e.target.value);
|
this.updateApplicationField("refreshExpireInHours", value);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row style={{marginTop: "20px"}} >
|
||||||
|
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||||
|
{Setting.getLabel(i18next.t("application:Failed signin limit"), i18next.t("application:Failed signin limit - Tooltip"))} :
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<InputNumber style={{width: "150px"}} value={this.state.application.failedSigninLimit} min={1} step={1} precision={0} addonAfter="Times" onChange={value => {
|
||||||
|
this.updateApplicationField("failedSigninLimit", value);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row style={{marginTop: "20px"}} >
|
||||||
|
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||||
|
{Setting.getLabel(i18next.t("application:Failed signin frozen time"), i18next.t("application:Failed signin frozen time - Tooltip"))} :
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<InputNumber style={{width: "150px"}} value={this.state.application.failedSigninfrozenTime} min={1} step={1} precision={0} addonAfter="Minutes" onChange={value => {
|
||||||
|
this.updateApplicationField("failedSigninfrozenTime", value);
|
||||||
}} />
|
}} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Ob Casdoor eine Sitzung aufrechterhält, nachdem man sich von der Anwendung aus bei Casdoor angemeldet hat",
|
"Enable signin session - Tooltip": "Ob Casdoor eine Sitzung aufrechterhält, nachdem man sich von der Anwendung aus bei Casdoor angemeldet hat",
|
||||||
"Enable signup": "Registrierung aktivieren",
|
"Enable signup": "Registrierung aktivieren",
|
||||||
"Enable signup - Tooltip": "Ob Benutzern erlaubt werden soll, ein neues Konto zu registrieren",
|
"Enable signup - Tooltip": "Ob Benutzern erlaubt werden soll, ein neues Konto zu registrieren",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Fehler bei der Anmeldung",
|
"Failed to sign in": "Fehler bei der Anmeldung",
|
||||||
"File uploaded successfully": "Datei erfolgreich hochgeladen",
|
"File uploaded successfully": "Datei erfolgreich hochgeladen",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Si Casdoor mantiene una sesión después de iniciar sesión en Casdoor desde la aplicación",
|
"Enable signin session - Tooltip": "Si Casdoor mantiene una sesión después de iniciar sesión en Casdoor desde la aplicación",
|
||||||
"Enable signup": "Habilitar registro",
|
"Enable signup": "Habilitar registro",
|
||||||
"Enable signup - Tooltip": "Ya sea permitir que los usuarios registren una nueva cuenta",
|
"Enable signup - Tooltip": "Ya sea permitir que los usuarios registren una nueva cuenta",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Error al iniciar sesión",
|
"Failed to sign in": "Error al iniciar sesión",
|
||||||
"File uploaded successfully": "Archivo subido exitosamente",
|
"File uploaded successfully": "Archivo subido exitosamente",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Conserver une session après la connexion à Casdoor à partir de l'application",
|
"Enable signin session - Tooltip": "Conserver une session après la connexion à Casdoor à partir de l'application",
|
||||||
"Enable signup": "Activer l'inscription",
|
"Enable signup": "Activer l'inscription",
|
||||||
"Enable signup - Tooltip": "Autoriser la création de nouveaux comptes",
|
"Enable signup - Tooltip": "Autoriser la création de nouveaux comptes",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Échec de la connexion",
|
"Failed to sign in": "Échec de la connexion",
|
||||||
"File uploaded successfully": "Fichier téléchargé avec succès",
|
"File uploaded successfully": "Fichier téléchargé avec succès",
|
||||||
"First, last": "Prénom, nom",
|
"First, last": "Prénom, nom",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Apakah Casdoor mempertahankan sesi setelah login ke Casdoor dari aplikasi",
|
"Enable signin session - Tooltip": "Apakah Casdoor mempertahankan sesi setelah login ke Casdoor dari aplikasi",
|
||||||
"Enable signup": "Aktifkan pendaftaran",
|
"Enable signup": "Aktifkan pendaftaran",
|
||||||
"Enable signup - Tooltip": "Apakah akan mengizinkan pengguna untuk mendaftar akun baru",
|
"Enable signup - Tooltip": "Apakah akan mengizinkan pengguna untuk mendaftar akun baru",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Gagal masuk",
|
"Failed to sign in": "Gagal masuk",
|
||||||
"File uploaded successfully": "Berkas telah diunggah dengan sukses",
|
"File uploaded successfully": "Berkas telah diunggah dengan sukses",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "アプリケーションから Casdoor にログイン後、Casdoor がセッションを維持しているかどうか",
|
"Enable signin session - Tooltip": "アプリケーションから Casdoor にログイン後、Casdoor がセッションを維持しているかどうか",
|
||||||
"Enable signup": "サインアップを有効にする",
|
"Enable signup": "サインアップを有効にする",
|
||||||
"Enable signup - Tooltip": "新しいアカウントの登録をユーザーに許可するかどうか",
|
"Enable signup - Tooltip": "新しいアカウントの登録をユーザーに許可するかどうか",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "ログインに失敗しました",
|
"Failed to sign in": "ログインに失敗しました",
|
||||||
"File uploaded successfully": "ファイルが正常にアップロードされました",
|
"File uploaded successfully": "ファイルが正常にアップロードされました",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "애플리케이션에서 Casdoor에 로그인 한 후 Casdoor가 세션을 유지하는 지 여부",
|
"Enable signin session - Tooltip": "애플리케이션에서 Casdoor에 로그인 한 후 Casdoor가 세션을 유지하는 지 여부",
|
||||||
"Enable signup": "가입 가능하게 만들기",
|
"Enable signup": "가입 가능하게 만들기",
|
||||||
"Enable signup - Tooltip": "사용자가 새로운 계정을 등록할지 여부",
|
"Enable signup - Tooltip": "사용자가 새로운 계정을 등록할지 여부",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "로그인 실패했습니다",
|
"Failed to sign in": "로그인 실패했습니다",
|
||||||
"File uploaded successfully": "파일이 성공적으로 업로드되었습니다",
|
"File uploaded successfully": "파일이 성공적으로 업로드되었습니다",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Se o Casdoor mantém uma sessão depois de fazer login no Casdoor a partir da aplicação",
|
"Enable signin session - Tooltip": "Se o Casdoor mantém uma sessão depois de fazer login no Casdoor a partir da aplicação",
|
||||||
"Enable signup": "Ativar registro",
|
"Enable signup": "Ativar registro",
|
||||||
"Enable signup - Tooltip": "Se permite que os usuários registrem uma nova conta",
|
"Enable signup - Tooltip": "Se permite que os usuários registrem uma nova conta",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Falha ao fazer login",
|
"Failed to sign in": "Falha ao fazer login",
|
||||||
"File uploaded successfully": "Arquivo enviado com sucesso",
|
"File uploaded successfully": "Arquivo enviado com sucesso",
|
||||||
"First, last": "Primeiro, último",
|
"First, last": "Primeiro, último",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Будет ли сохранена сессия в Casdoor после входа в него из приложения?",
|
"Enable signin session - Tooltip": "Будет ли сохранена сессия в Casdoor после входа в него из приложения?",
|
||||||
"Enable signup": "Включить регистрацию",
|
"Enable signup": "Включить регистрацию",
|
||||||
"Enable signup - Tooltip": "Разрешить ли пользователям зарегистрировать новый аккаунт",
|
"Enable signup - Tooltip": "Разрешить ли пользователям зарегистрировать новый аккаунт",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Не удалось войти в систему",
|
"Failed to sign in": "Не удалось войти в систему",
|
||||||
"File uploaded successfully": "Файл успешно загружен",
|
"File uploaded successfully": "Файл успешно загружен",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
|
||||||
"Enable signup": "Enable signup",
|
"Enable signup": "Enable signup",
|
||||||
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
"Enable signup - Tooltip": "Whether to allow users to register a new account",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Failed to sign in",
|
"Failed to sign in": "Failed to sign in",
|
||||||
"File uploaded successfully": "File uploaded successfully",
|
"File uploaded successfully": "File uploaded successfully",
|
||||||
"First, last": "First, last",
|
"First, last": "First, last",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "Có phải Casdoor duy trì phiên sau khi đăng nhập vào Casdoor từ ứng dụng không?",
|
"Enable signin session - Tooltip": "Có phải Casdoor duy trì phiên sau khi đăng nhập vào Casdoor từ ứng dụng không?",
|
||||||
"Enable signup": "Kích hoạt đăng ký",
|
"Enable signup": "Kích hoạt đăng ký",
|
||||||
"Enable signup - Tooltip": "Có cho phép người dùng đăng ký tài khoản mới không?",
|
"Enable signup - Tooltip": "Có cho phép người dùng đăng ký tài khoản mới không?",
|
||||||
|
"Failed signin frozen time": "Failed signin frozen time",
|
||||||
|
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
|
||||||
|
"Failed signin limit": "Failed signin limit",
|
||||||
|
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
|
||||||
"Failed to sign in": "Không đăng nhập được",
|
"Failed to sign in": "Không đăng nhập được",
|
||||||
"File uploaded successfully": "Tệp được tải lên thành công",
|
"File uploaded successfully": "Tệp được tải lên thành công",
|
||||||
"First, last": "Tên, Họ",
|
"First, last": "Tên, Họ",
|
||||||
|
@ -46,6 +46,10 @@
|
|||||||
"Enable signin session - Tooltip": "从应用登录Casdoor后,Casdoor是否保持会话",
|
"Enable signin session - Tooltip": "从应用登录Casdoor后,Casdoor是否保持会话",
|
||||||
"Enable signup": "启用注册",
|
"Enable signup": "启用注册",
|
||||||
"Enable signup - Tooltip": "是否允许用户注册",
|
"Enable signup - Tooltip": "是否允许用户注册",
|
||||||
|
"Failed signin frozen time": "登入重试等待时间",
|
||||||
|
"Failed signin frozen time - Tooltip": "超过登入错误重试次数后的等待时间,只有超过等待时间后用户才能重新登入,默认值为15分钟,设置的值需为正整数",
|
||||||
|
"Failed signin limit": "登入错误次数限制",
|
||||||
|
"Failed signin limit - Tooltip": "短时间内允许的最大登入错误重试次数,超过次数限制后将在一段时间内禁止登入,默认值为5,设置的值需为正整数",
|
||||||
"Failed to sign in": "登录失败",
|
"Failed to sign in": "登录失败",
|
||||||
"File uploaded successfully": "文件上传成功",
|
"File uploaded successfully": "文件上传成功",
|
||||||
"First, last": "名字, 姓氏",
|
"First, last": "名字, 姓氏",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user