mirror of
https://github.com/casdoor/casdoor.git
synced 2025-08-23 05:40:33 +08:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
83df077a02 | ||
![]() |
ad6080e763 | ||
![]() |
c179324de4 | ||
![]() |
645716e485 | ||
![]() |
955e73ddd1 | ||
![]() |
2493ae9cfe | ||
![]() |
b5c80513fb | ||
![]() |
0653353be1 | ||
![]() |
d6778fb4e6 | ||
![]() |
fee7773839 | ||
![]() |
d47ac6b957 |
@@ -719,7 +719,8 @@ func (c *ApiController) Login() {
|
||||
|
||||
setHttpClient(idProvider, provider.Type)
|
||||
|
||||
if authForm.State != conf.GetConfigString("authState") && authForm.State != application.Name {
|
||||
stateApplicationName := strings.Split(authForm.State, "-org-")[0]
|
||||
if authForm.State != conf.GetConfigString("authState") && stateApplicationName != application.Name {
|
||||
c.ResponseError(fmt.Sprintf(c.T("auth:State expected: %s, but got: %s"), conf.GetConfigString("authState"), authForm.State))
|
||||
return
|
||||
}
|
||||
|
@@ -435,9 +435,15 @@ func (c *ApiController) ResetEmailOrPhone() {
|
||||
|
||||
switch destType {
|
||||
case object.VerifyTypeEmail:
|
||||
id := user.GetId()
|
||||
user.Email = dest
|
||||
user.EmailVerified = true
|
||||
_, err = object.UpdateUser(user.GetId(), user, []string{"email", "email_verified"}, false)
|
||||
columns := []string{"email", "email_verified"}
|
||||
if organization.UseEmailAsUsername {
|
||||
user.Name = user.Email
|
||||
columns = append(columns, "name")
|
||||
}
|
||||
_, err = object.UpdateUser(id, user, columns, false)
|
||||
case object.VerifyTypePhone:
|
||||
user.Phone = dest
|
||||
_, err = object.SetUserField(user, "phone", user.Phone)
|
||||
@@ -449,6 +455,9 @@ func (c *ApiController) ResetEmailOrPhone() {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
}
|
||||
if organization.UseEmailAsUsername {
|
||||
c.SetSessionUsername(user.GetId())
|
||||
}
|
||||
|
||||
err = object.DisableVerificationCode(checkDest)
|
||||
if err != nil {
|
||||
|
@@ -47,6 +47,7 @@ func TestGenerateI18nFrontend(t *testing.T) {
|
||||
applyToOtherLanguage("frontend", "fa", data)
|
||||
applyToOtherLanguage("frontend", "cs", data)
|
||||
applyToOtherLanguage("frontend", "sk", data)
|
||||
applyToOtherLanguage("frontend", "az", data)
|
||||
}
|
||||
|
||||
func TestGenerateI18nBackend(t *testing.T) {
|
||||
@@ -77,4 +78,5 @@ func TestGenerateI18nBackend(t *testing.T) {
|
||||
applyToOtherLanguage("backend", "fa", data)
|
||||
applyToOtherLanguage("backend", "cs", data)
|
||||
applyToOtherLanguage("backend", "sk", data)
|
||||
applyToOtherLanguage("backend", "az", data)
|
||||
}
|
||||
|
193
i18n/locales/az/data.json
Normal file
193
i18n/locales/az/data.json
Normal file
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"account": {
|
||||
"Failed to add user": "İstifadəçi əlavə etmə uğursuz oldu",
|
||||
"Get init score failed, error: %w": "Başlanğıc xal alınması uğursuz oldu, xəta: %w",
|
||||
"Please sign out first": "Xahiş edirik əvvəlcə çıxış edin",
|
||||
"The application does not allow to sign up new account": "Tətbiq yeni hesab qeydiyyatına icazə vermir"
|
||||
},
|
||||
"auth": {
|
||||
"Challenge method should be S256": "Çağırış metodu S256 olmalıdır",
|
||||
"DeviceCode Invalid": "Cihaz Kodu Etibarsızdır",
|
||||
"Failed to create user, user information is invalid: %s": "İstifadəçi yaratma uğursuz oldu, istifadəçi məlumatları etibarsızdır: %s",
|
||||
"Failed to login in: %s": "Giriş uğursuz oldu: %s",
|
||||
"Invalid token": "Etibarsız token",
|
||||
"State expected: %s, but got: %s": "Gözlənilən vəziyyət: %s, lakin alınan: %s",
|
||||
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "Provayder üçün hesab: %s və istifadəçi adı: %s (%s) mövcud deyil və %%s vasitəsilə yeni hesab olaraq qeydiyyatdan keçməyə icazə verilmir, xahiş edirik qeydiyyat üçün başqa üsul istifadə edin",
|
||||
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "Provayder üçün hesab: %s və istifadəçi adı: %s (%s) mövcud deyil və yeni hesab olaraq qeydiyyatdan keçməyə icazə verilmir, xahiş edirik IT dəstəyinizlə əlaqə saxlayın",
|
||||
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "Provayder üçün hesab: %s və istifadəçi adı: %s (%s) artıq başqa hesabla əlaqələndirilmişdir: %s (%s)",
|
||||
"The application: %s does not exist": "Tətbiq: %s mövcud deyil",
|
||||
"The application: %s has disabled users to signin": "Tətbiq: %s istifadəçilərin girişini söndürmüşdür",
|
||||
"The login method: login with LDAP is not enabled for the application": "Giriş metodu: LDAP ilə giriş bu tətbiq üçün aktiv deyil",
|
||||
"The login method: login with SMS is not enabled for the application": "Giriş metodu: SMS ilə giriş bu tətbiq üçün aktiv deyil",
|
||||
"The login method: login with email is not enabled for the application": "Giriş metodu: email ilə giriş bu tətbiq üçün aktiv deyil",
|
||||
"The login method: login with face is not enabled for the application": "Giriş metodu: üz ilə giriş bu tətbiq üçün aktiv deyil",
|
||||
"The login method: login with password is not enabled for the application": "Giriş metodu: şifrə ilə giriş bu tətbiq üçün aktiv deyil",
|
||||
"The organization: %s does not exist": "Təşkilat: %s mövcud deyil",
|
||||
"The organization: %s has disabled users to signin": "Təşkilat: %s istifadəçilərin girişini söndürmüşdür",
|
||||
"The provider: %s does not exist": "Provayder: %s mövcud deyil",
|
||||
"The provider: %s is not enabled for the application": "Provayder: %s bu tətbiq üçün aktiv deyil",
|
||||
"Unauthorized operation": "İcazəsiz əməliyyat",
|
||||
"Unknown authentication type (not password or provider), form = %s": "Naməlum təsdiq növü (şifrə və ya provayder deyil), forma = %s",
|
||||
"User's tag: %s is not listed in the application's tags": "İstifadəçinin teqi: %s tətbiqin teqləri siyahısında yoxdur",
|
||||
"UserCode Expired": "İstifadəçi Kodunun Vaxtı Keçib",
|
||||
"UserCode Invalid": "İstifadəçi Kodu Etibarsızdır",
|
||||
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "ödənişli istifadəçi %s aktiv və ya gözləyən abunəyə malik deyil və tətbiq: %s defolt qiymətləndirməyə malik deyil",
|
||||
"the application for user %s is not found": "istifadəçi %s üçün tətbiq tapılmadı",
|
||||
"the organization: %s is not found": "təşkilat: %s tapılmadı"
|
||||
},
|
||||
"cas": {
|
||||
"Service %s and %s do not match": "Xidmət %s və %s uyğun gəlmir"
|
||||
},
|
||||
"check": {
|
||||
"%s does not meet the CIDR format requirements: %s": "%s CIDR format tələblərinə cavab vermir: %s",
|
||||
"Affiliation cannot be blank": "Mənsub sahəsi boş ola bilməz",
|
||||
"CIDR for IP: %s should not be empty": "IP üçün CIDR: %s boş olmamalıdır",
|
||||
"Default code does not match the code's matching rules": "Defolt kod kodun uyğunluq qaydalara uyğun gəlmir",
|
||||
"DisplayName cannot be blank": "Göstərilən Ad boş ola bilməz",
|
||||
"DisplayName is not valid real name": "Göstərilən Ad etibarlı həqiqi ad deyil",
|
||||
"Email already exists": "Email artıq mövcuddur",
|
||||
"Email cannot be empty": "Email boş ola bilməz",
|
||||
"Email is invalid": "Email etibarsızdır",
|
||||
"Empty username.": "Boş istifadəçi adı.",
|
||||
"Face data does not exist, cannot log in": "Üz məlumatları mövcud deyil, giriş edilə bilməz",
|
||||
"Face data mismatch": "Üz məlumatları uyğun gəlmir",
|
||||
"Failed to parse client IP: %s": "Müştəri IP-ni təhlil etmək uğursuz oldu: %s",
|
||||
"FirstName cannot be blank": "Ad boş ola bilməz",
|
||||
"Invitation code cannot be blank": "Dəvət kodu boş ola bilməz",
|
||||
"Invitation code exhausted": "Dəvət kodu tükənib",
|
||||
"Invitation code is invalid": "Dəvət kodu etibarsızdır",
|
||||
"Invitation code suspended": "Dəvət kodu dayandırılıb",
|
||||
"LDAP user name or password incorrect": "LDAP istifadəçi adı və ya şifrə yanlışdır",
|
||||
"LastName cannot be blank": "Soyad boş ola bilməz",
|
||||
"Multiple accounts with same uid, please check your ldap server": "Eyni uid ilə çoxlu hesablar, xahiş edirik ldap serverinizi yoxlayın",
|
||||
"Organization does not exist": "Təşkilat mövcud deyil",
|
||||
"Password cannot be empty": "Şifrə boş ola bilməz",
|
||||
"Phone already exists": "Telefon artıq mövcuddur",
|
||||
"Phone cannot be empty": "Telefon boş ola bilməz",
|
||||
"Phone number is invalid": "Telefon nömrəsi etibarsızdır",
|
||||
"Please register using the email corresponding to the invitation code": "Xahiş edirik dəvət koduna uyğun email istifadə edərək qeydiyyatdan keçin",
|
||||
"Please register using the phone corresponding to the invitation code": "Xahiş edirik dəvət koduna uyğun telefon istifadə edərək qeydiyyatdan keçin",
|
||||
"Please register using the username corresponding to the invitation code": "Xahiş edirik dəvət koduna uyğun istifadəçi adı istifadə edərək qeydiyyatdan keçin",
|
||||
"Session outdated, please login again": "Sessiyanın vaxtı keçib, xahiş edirik yenidən daxil olun",
|
||||
"The invitation code has already been used": "Dəvət kodu artıq istifadə edilib",
|
||||
"The user is forbidden to sign in, please contact the administrator": "İstifadəçinin girişi qadağandır, xahiş edirik administratorla əlaqə saxlayın",
|
||||
"The user: %s doesn't exist in LDAP server": "İstifadəçi: %s LDAP serverində mövcud deyil",
|
||||
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "İstifadəçi adı yalnız hərf-rəqəm simvolları, alt xətt və ya defis ehtiva edə bilər, ardıcıl defis və ya alt xətt ola bilməz və defis və ya alt xəttlə başlaya və ya bitə bilməz.",
|
||||
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "Hesab sahəsi \\\"%s\\\" üçün dəyər \\\"%s\\\" hesab elementi regex-inə uyğun gəlmir",
|
||||
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "Qeydiyyat sahəsi \\\"%s\\\" üçün dəyər \\\"%s\\\" tətbiq \\\"%s\\\"in qeydiyyat elementi regex-inə uyğun gəlmir",
|
||||
"Username already exists": "İstifadəçi adı artıq mövcuddur",
|
||||
"Username cannot be an email address": "İstifadəçi adı email ünvanı ola bilməz",
|
||||
"Username cannot contain white spaces": "İstifadəçi adı boşluqlar ehtiva edə bilməz",
|
||||
"Username cannot start with a digit": "İstifadəçi adı rəqəmlə başlaya bilməz",
|
||||
"Username is too long (maximum is 255 characters).": "İstifadəçi adı çox uzundur (maksimum 255 simvoldur).",
|
||||
"Username must have at least 2 characters": "İstifadəçi adı ən azı 2 simvola malik olmalıdır",
|
||||
"Username supports email format. Also The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline. Also pay attention to the email format.": "İstifadəçi adı email formatını dəstəkləyir. Həmçinin istifadəçi adı yalnız hərf-rəqəm simvolları, alt xətt və ya defis ehtiva edə bilər, ardıcıl defis və ya alt xətt ola bilməz və defis və ya alt xəttlə başlaya və ya bitə bilməz. Həmçinin email formatına diqqət edin.",
|
||||
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Yanlış şifrə və ya kod dəfələrlə daxil etmisiniz, xahiş edirik %d dəqiqə gözləyin və yenidən cəhd edin",
|
||||
"Your IP address: %s has been banned according to the configuration of: ": "IP ünvanınız: %s konfiqurasiyaya görə qadağan edilib: ",
|
||||
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Şifrənizin vaxtı keçib. Xahiş edirik \\\"Şifrəni unutdum\\\" düyməsinə basaraq şifrənizi sıfırlayın",
|
||||
"Your region is not allow to signup by phone": "Regionunuzda telefonla qeydiyyata icazə verilmir",
|
||||
"password or code is incorrect": "şifrə və ya kod yanlışdır",
|
||||
"password or code is incorrect, you have %s remaining chances": "şifrə və ya kod yanlışdır, %s şansınız qalıb",
|
||||
"unsupported password type: %s": "dəstəklənməyən şifrə növü: %s"
|
||||
},
|
||||
"enforcer": {
|
||||
"the adapter: %s is not found": "adapter: %s tapılmadı"
|
||||
},
|
||||
"general": {
|
||||
"Failed to import groups": "Qrupları idxal etmək uğursuz oldu",
|
||||
"Failed to import users": "İstifadəçiləri idxal etmək uğursuz oldu",
|
||||
"Missing parameter": "Parametr çatışmır",
|
||||
"Only admin user can specify user": "Yalnız admin istifadəçi başqa istifadəçini təyin edə bilər",
|
||||
"Please login first": "Xahiş edirik əvvəlcə daxil olun",
|
||||
"The organization: %s should have one application at least": "Təşkilat: %s ən azı bir tətbiqə malik olmalıdır",
|
||||
"The user: %s doesn't exist": "İstifadəçi: %s mövcud deyil",
|
||||
"Wrong userId": "Yanlış istifadəçi ID-si",
|
||||
"don't support captchaProvider: ": "captcha provayderini dəstəkləmir: ",
|
||||
"this operation is not allowed in demo mode": "bu əməliyyat demo rejimində icazə verilmir",
|
||||
"this operation requires administrator to perform": "bu əməliyyat administrator tərəfindən yerinə yetirilməsini tələb edir"
|
||||
},
|
||||
"ldap": {
|
||||
"Ldap server exist": "LDAP serveri mövcuddur"
|
||||
},
|
||||
"link": {
|
||||
"Please link first": "Xahiş edirik əvvəlcə əlaqələndirin",
|
||||
"This application has no providers": "Bu tətbiqin provayderləri yoxdur",
|
||||
"This application has no providers of type": "Bu tətbiqin bu növdə provayderi yoxdur",
|
||||
"This provider can't be unlinked": "Bu provayderin əlaqəsi kəsilə bilməz",
|
||||
"You are not the global admin, you can't unlink other users": "Siz qlobal admin deyilsiniz, digər istifadəçilərin əlaqəsini kəsə bilməzsiniz",
|
||||
"You can't unlink yourself, you are not a member of any application": "Öz əlaqənizi kəsə bilməzsiniz, heç bir tətbiqin üzvü deyilsiniz"
|
||||
},
|
||||
"organization": {
|
||||
"Only admin can modify the %s.": "Yalnız admin %s-ni dəyişdirə bilər.",
|
||||
"The %s is immutable.": "%s dəyişilməzdir.",
|
||||
"Unknown modify rule %s.": "Naməlum dəyişdirmə qaydası %s.",
|
||||
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "'built-in' təşkilatına yeni istifadəçi əlavə etmək hazırda söndürülüb. Qeyd edin: 'built-in' təşkilatındakı bütün istifadəçilər Casdoor-da qlobal administratorlardır. Sənədlərə baxın: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. Əgər hələ də 'built-in' təşkilat üçün istifadəçi yaratmaq istəyirsinizsə, təşkilatın tənzimləmələr səhifəsinə gedib 'İmtiyaz razılığına malikdir' seçimini aktiv edin."
|
||||
},
|
||||
"permission": {
|
||||
"The permission: \\\"%s\\\" doesn't exist": "İcazə: \\\"%s\\\" mövcud deyil"
|
||||
},
|
||||
"provider": {
|
||||
"Invalid application id": "Etibarsız tətbiq id-si",
|
||||
"the provider: %s does not exist": "provayder: %s mövcud deyil"
|
||||
},
|
||||
"resource": {
|
||||
"User is nil for tag: avatar": "Avatar teqi üçün istifadəçi nil-dir",
|
||||
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "İstifadəçi adı və ya tam fayl yolu boşdur: istifadəçi adı = %s, tam fayl yolu = %s"
|
||||
},
|
||||
"saml": {
|
||||
"Application %s not found": "Tətbiq %s tapılmadı"
|
||||
},
|
||||
"saml_sp": {
|
||||
"provider %s's category is not SAML": "provayder %s-in kateqoriyası SAML deyil"
|
||||
},
|
||||
"service": {
|
||||
"Empty parameters for emailForm: %v": "emailForm üçün boş parametrlər: %v",
|
||||
"Invalid Email receivers: %s": "Etibarsız Email qəbuledicilər: %s",
|
||||
"Invalid phone receivers: %s": "Etibarsız telefon qəbuledicilər: %s"
|
||||
},
|
||||
"storage": {
|
||||
"The objectKey: %s is not allowed": "obyekt açarı: %s icazə verilmir",
|
||||
"The provider type: %s is not supported": "provayder növü: %s dəstəklənmir"
|
||||
},
|
||||
"subscription": {
|
||||
"Error": "Xəta"
|
||||
},
|
||||
"token": {
|
||||
"Grant_type: %s is not supported in this application": "Grant_type: %s bu tətbiqdə dəstəklənmir",
|
||||
"Invalid application or wrong clientSecret": "Etibarsız tətbiq və ya yanlış müştəri sirri",
|
||||
"Invalid client_id": "Etibarsız client_id",
|
||||
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Yönləndirmə URI: %s icazə verilən Yönləndirmə URI siyahısında mövcud deyil",
|
||||
"Token not found, invalid accessToken": "Token tapılmadı, etibarsız accessToken"
|
||||
},
|
||||
"user": {
|
||||
"Display name cannot be empty": "Göstərilən ad boş ola bilməz",
|
||||
"MFA email is enabled but email is empty": "MFA email aktiv edilib, lakin email boşdur",
|
||||
"MFA phone is enabled but phone number is empty": "MFA telefon aktiv edilib, lakin telefon nömrəsi boşdur",
|
||||
"New password cannot contain blank space.": "Yeni şifrə boş yer ehtiva edə bilməz.",
|
||||
"the user's owner and name should not be empty": "istifadəçinin sahibi və adı boş olmamalıdır"
|
||||
},
|
||||
"util": {
|
||||
"No application is found for userId: %s": "İstifadəçi ID-si üçün heç bir tətbiq tapılmadı: %s",
|
||||
"No provider for category: %s is found for application: %s": "Tətbiq üçün kateqoriya üçün heç bir provayder tapılmadı: %s: %s",
|
||||
"The provider: %s is not found": "Provayder: %s tapılmadı"
|
||||
},
|
||||
"verification": {
|
||||
"Invalid captcha provider.": "Etibarsız captcha provaydeři.",
|
||||
"Phone number is invalid in your region %s": "Telefon nömrəsi sizin regionunuzda etibarsızdır %s",
|
||||
"The verification code has already been used!": "Doğrulama kodu artıq istifadə edilib!",
|
||||
"The verification code has not been sent yet!": "Doğrulama kodu hələ göndərilməyib!",
|
||||
"Turing test failed.": "Türinq testi uğursuz oldu.",
|
||||
"Unable to get the email modify rule.": "Email dəyişdirmə qaydasını əldə etmək mümkün olmadı.",
|
||||
"Unable to get the phone modify rule.": "Telefon dəyişdirmə qaydasını əldə etmək mümkün olmadı.",
|
||||
"Unknown type": "Naməlum növ",
|
||||
"Wrong verification code!": "Yanlış doğrulama kodu!",
|
||||
"You should verify your code in %d min!": "Kodunuzu %d dəqiqə içində doğrulamalısınız!",
|
||||
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "xahiş edirik tətbiq üçün \\\"Provaydeerlər\\\" siyahısına SMS provaydeři əlavə edin: %s",
|
||||
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "xahiş edirik tətbiq üçün \\\"Provaydeerlər\\\" siyahısına Email provaydeři əlavə edin: %s",
|
||||
"the user does not exist, please sign up first": "istifadəçi mövcud deyil, xahiş edirik əvvəlcə qeydiyyatdan keçin"
|
||||
},
|
||||
"webauthn": {
|
||||
"Found no credentials for this user": "Bu istifadəçi üçün heç bir etimadnamə tapılmadı",
|
||||
"Please call WebAuthnSigninBegin first": "Xahiş edirik əvvəlcə WebAuthnSigninBegin çağırın"
|
||||
}
|
||||
}
|
@@ -37,7 +37,8 @@
|
||||
"UA",
|
||||
"KZ",
|
||||
"CZ",
|
||||
"SK"
|
||||
"SK",
|
||||
"AZ"
|
||||
],
|
||||
"defaultAvatar": "",
|
||||
"defaultApplication": "",
|
||||
@@ -66,7 +67,8 @@
|
||||
"kk",
|
||||
"fa",
|
||||
"cs",
|
||||
"sk"
|
||||
"sk",
|
||||
"az"
|
||||
],
|
||||
"masterPassword": "",
|
||||
"defaultPassword": "",
|
||||
|
@@ -67,6 +67,7 @@ type Application struct {
|
||||
|
||||
DisplayName string `xorm:"varchar(100)" json:"displayName"`
|
||||
Logo string `xorm:"varchar(200)" json:"logo"`
|
||||
Order int `json:"order"`
|
||||
HomepageUrl string `xorm:"varchar(100)" json:"homepageUrl"`
|
||||
Description string `xorm:"varchar(100)" json:"description"`
|
||||
Organization string `xorm:"varchar(100)" json:"organization"`
|
||||
|
@@ -468,6 +468,16 @@ class ApplicationEditPage extends React.Component {
|
||||
</Select>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("application:Order"), i18next.t("application:Order - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<InputNumber style={{width: "150px"}} value={this.state.application.order} min={0} step={1} precision={0} addonAfter="" onChange={value => {
|
||||
this.updateApplicationField("order", value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("application:Token expire"), i18next.t("application:Token expire - Tooltip"))} :
|
||||
|
@@ -42,10 +42,11 @@ class BaseListPage extends React.Component {
|
||||
handleOrganizationChange = () => {
|
||||
this.setState({
|
||||
organizationName: this.props.match?.params.organizationName || Setting.getRequestOrganization(this.props.account),
|
||||
},
|
||||
() => {
|
||||
const {pagination} = this.state;
|
||||
this.fetch({pagination});
|
||||
});
|
||||
|
||||
const {pagination} = this.state;
|
||||
this.fetch({pagination});
|
||||
};
|
||||
|
||||
handleTourChange = () => {
|
||||
|
@@ -60,6 +60,7 @@ export const Countries = [
|
||||
{label: "فارسی", key: "fa", country: "IR", alt: "فارسی"},
|
||||
{label: "Čeština", key: "cs", country: "CZ", alt: "Čeština"},
|
||||
{label: "Slovenčina", key: "sk", country: "SK", alt: "Slovenčina"},
|
||||
{label: "Azərbaycan dili", key: "az", country: "AZ", alt: "Azərbaycan dili"},
|
||||
];
|
||||
|
||||
export function getThemeData(organization, application) {
|
||||
@@ -156,7 +157,7 @@ export const OtherProviderInfo = {
|
||||
url: "https://control.msg91.com/app/",
|
||||
},
|
||||
"OSON SMS": {
|
||||
logo: "https://osonsms.com/images/osonsms-logo.svg",
|
||||
logo: `${StaticBaseUrl}/img/social_osonsms.svg`,
|
||||
url: "https://osonsms.com/",
|
||||
},
|
||||
"Custom HTTP SMS": {
|
||||
|
@@ -326,7 +326,7 @@ class UserEditPage extends React.Component {
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Select virtual={false} mode="multiple" style={{width: "100%"}} disabled={disabled} value={this.state.user.groups ?? []} onChange={(value => {
|
||||
if (this.state.groups?.filter(group => value.includes(group.name))
|
||||
if (this.state.groups?.filter(group => value.includes(`${group.owner}/${group.name}`))
|
||||
.filter(group => group.type === "Physical").length > 1) {
|
||||
Setting.showMessage("error", i18next.t("general:You can only select one physical group"));
|
||||
return;
|
||||
@@ -1117,6 +1117,32 @@ class UserEditPage extends React.Component {
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
} else if (accountItem.name === "First name") {
|
||||
return (
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("general:First name"), i18next.t("general:First name - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22}>
|
||||
<Input value={this.state.user.firstName} onChange={e => {
|
||||
this.updateUserField("firstName", e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
} else if (accountItem.name === "Last name") {
|
||||
return (
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
|
||||
{Setting.getLabel(i18next.t("general:Last name"), i18next.t("general:Last name - Tooltip"))} :
|
||||
</Col>
|
||||
<Col span={22}>
|
||||
<Input value={this.state.user.lastName} onChange={e => {
|
||||
this.updateUserField("lastName", e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -39,6 +39,7 @@ import {GoogleOneTapLoginVirtualButton} from "./GoogleLoginButton";
|
||||
import * as ProviderButton from "./ProviderButton";
|
||||
import {createFormAndSubmit, goToLink} from "../Setting";
|
||||
import WeChatLoginPanel from "./WeChatLoginPanel";
|
||||
import {CountryCodeSelect} from "../common/select/CountryCodeSelect";
|
||||
const FaceRecognitionCommonModal = lazy(() => import("../common/modal/FaceRecognitionCommonModal"));
|
||||
const FaceRecognitionModal = lazy(() => import("../common/modal/FaceRecognitionModal"));
|
||||
|
||||
@@ -677,6 +678,62 @@ class LoginPage extends React.Component {
|
||||
if (this.state.loginMethod === "wechat") {
|
||||
return (<WeChatLoginPanel application={application} loginMethod={this.state.loginMethod} />);
|
||||
}
|
||||
|
||||
if (this.state.loginMethod === "verificationCodePhone") {
|
||||
return <Form.Item className="signin-phone" required={true}>
|
||||
<Input.Group compact>
|
||||
<Form.Item
|
||||
name="countryCode"
|
||||
noStyle
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: i18next.t("signup:Please select your country code!"),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<CountryCodeSelect
|
||||
style={{width: "35%"}}
|
||||
countryCodes={this.getApplicationObj().organizationObj.countryCodes}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
name="username"
|
||||
dependencies={["countryCode"]}
|
||||
noStyle
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: i18next.t("signup:Please input your phone number!"),
|
||||
},
|
||||
({getFieldValue}) => ({
|
||||
validator: (_, value) => {
|
||||
if (!value) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if (value && !Setting.isValidPhone(value, getFieldValue("countryCode"))) {
|
||||
this.setState({validEmailOrPhone: false});
|
||||
return Promise.reject(i18next.t("signup:The input is not valid Phone!"));
|
||||
}
|
||||
|
||||
this.setState({validEmailOrPhone: true});
|
||||
return Promise.resolve();
|
||||
},
|
||||
}),
|
||||
]}
|
||||
>
|
||||
<Input
|
||||
className="signup-phone-input"
|
||||
placeholder={signinItem.placeholder}
|
||||
style={{width: "65%", textAlign: "left"}}
|
||||
onChange={e => this.setState({username: e.target.value})}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Input.Group>
|
||||
</Form.Item>;
|
||||
}
|
||||
|
||||
return (
|
||||
<div key={resultItemKey}>
|
||||
<div dangerouslySetInnerHTML={{__html: ("<style>" + signinItem.customCss?.replaceAll("<style>", "").replaceAll("</style>", "") + "</style>")}} />
|
||||
@@ -1122,11 +1179,13 @@ class LoginPage extends React.Component {
|
||||
{i18next.t("login:Continue with")} :
|
||||
</div>
|
||||
<br />
|
||||
<SelfLoginButton account={this.props.account} onClick={() => {
|
||||
<div onClick={() => {
|
||||
const values = {};
|
||||
values["application"] = application.name;
|
||||
this.login(values);
|
||||
}} />
|
||||
}}>
|
||||
<SelfLoginButton account={this.props.account} />
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div style={{fontSize: 16, textAlign: "left"}}>
|
||||
|
@@ -392,7 +392,11 @@ export function getAuthUrl(application, provider, method, code) {
|
||||
let redirectUri = `${redirectOrigin}/callback`;
|
||||
let scope = authInfo[provider.type].scope;
|
||||
const isShortState = (provider.type === "WeChat" && navigator.userAgent.includes("MicroMessenger")) || (provider.type === "Twitter");
|
||||
const state = Util.getStateFromQueryParams(application.name, provider.name, method, isShortState);
|
||||
let applicationName = application.name;
|
||||
if (application?.isShared) {
|
||||
applicationName = `${application.name}-org-${application.organization}`;
|
||||
}
|
||||
const state = Util.getStateFromQueryParams(applicationName, provider.name, method, isShortState);
|
||||
const codeChallenge = "P3S-a7dr8bgM4bF6vOyiKkKETDl16rcAzao9F8UIL1Y"; // SHA256(Base64-URL-encode("casdoor-verifier"))
|
||||
|
||||
if (provider.type === "AzureAD") {
|
||||
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import React from "react";
|
||||
import React, {memo} from "react";
|
||||
import {createButton} from "react-social-login-buttons";
|
||||
|
||||
class SelfLoginButton extends React.Component {
|
||||
@@ -44,4 +44,4 @@ class SelfLoginButton extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
export default SelfLoginButton;
|
||||
export default memo(SelfLoginButton);
|
||||
|
@@ -364,6 +364,40 @@ class SignupPage extends React.Component {
|
||||
<Input className="signup-name-input" placeholder={signupItem.placeholder} />
|
||||
</Form.Item>
|
||||
);
|
||||
} else if (signupItem.name === "First name" && this.state?.displayNameRule !== "First, last") {
|
||||
return (
|
||||
<Form.Item
|
||||
name="firstName"
|
||||
className="signup-first-name"
|
||||
label={signupItem.label ? signupItem.label : i18next.t("general:First name")}
|
||||
rules={[
|
||||
{
|
||||
required: required,
|
||||
message: i18next.t("signup:Please input your first name!"),
|
||||
whitespace: true,
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input className="signup-first-name-input" placeholder={signupItem.placeholder} />
|
||||
</Form.Item>
|
||||
);
|
||||
} else if (signupItem.name === "Last name" && this.state?.displayNameRule !== "First, last") {
|
||||
return (
|
||||
<Form.Item
|
||||
name="lastName"
|
||||
className="signup-last-name"
|
||||
label={signupItem.label ? signupItem.label : i18next.t("general:Last name")}
|
||||
rules={[
|
||||
{
|
||||
required: required,
|
||||
message: i18next.t("signup:Please input your last name!"),
|
||||
whitespace: true,
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input className="signup-last-name-input" placeholder={signupItem.placeholder} />
|
||||
</Form.Item>
|
||||
);
|
||||
} else if (signupItem.name === "Affiliation") {
|
||||
return (
|
||||
<Form.Item
|
||||
@@ -776,6 +810,12 @@ class SignupPage extends React.Component {
|
||||
this.form.current?.setFieldValue("invitationCode", this.state.invitationCode);
|
||||
}
|
||||
}
|
||||
|
||||
const displayNameItem = application.signupItems?.find(item => item.name === "Display name");
|
||||
if (displayNameItem && !this.state.displayNameRule) {
|
||||
this.setState({displayNameRule: displayNameItem.rule});
|
||||
}
|
||||
|
||||
return (
|
||||
<Form
|
||||
{...formItemLayout}
|
||||
|
@@ -19,13 +19,21 @@ import GridCards from "./GridCards";
|
||||
const AppListPage = (props) => {
|
||||
const [applications, setApplications] = React.useState(null);
|
||||
|
||||
const sort = (applications) => {
|
||||
applications.sort((a, b) => {
|
||||
return a.order - b.order;
|
||||
});
|
||||
};
|
||||
|
||||
React.useEffect(() => {
|
||||
if (props.account === null) {
|
||||
return;
|
||||
}
|
||||
ApplicationBackend.getApplicationsByOrganization("admin", props.account.owner)
|
||||
.then((res) => {
|
||||
setApplications(res.data || []);
|
||||
const applications = res.data || [];
|
||||
sort(applications);
|
||||
setApplications(applications);
|
||||
});
|
||||
}, [props.account]);
|
||||
|
||||
|
@@ -83,7 +83,7 @@ export const CaptchaModal = (props) => {
|
||||
const renderDefaultCaptcha = () => {
|
||||
if (noModal) {
|
||||
return (
|
||||
<Row style={{textAlign: "center"}}>
|
||||
<Row style={{textAlign: "center"}} gutter={10}>
|
||||
<Col
|
||||
style={{flex: noModal ? "70%" : "100%"}}>
|
||||
<Input
|
||||
|
@@ -133,6 +133,9 @@ function initLanguage() {
|
||||
case "sk-SK":
|
||||
language = "sk";
|
||||
break;
|
||||
case "az":
|
||||
language = "az";
|
||||
break;
|
||||
default:
|
||||
language = Conf.DefaultLanguage;
|
||||
}
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "لا توجد مصادقة",
|
||||
"Normal": "عادي",
|
||||
"Only signup": "التسجيل فقط",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "وضع اختيار المنظمة",
|
||||
"Org choice mode - Tooltip": "وضع اختيار المنظمة - تلميح",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "يرجى تشغيل \\\"جلسة الدخول\\\" أولاً قبل تشغيل \\\"الدخول التلقائي\\\"",
|
||||
|
1328
web/src/locales/az/data.json
Normal file
1328
web/src/locales/az/data.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -92,6 +92,8 @@
|
||||
"No verification": "Žádná verifikace",
|
||||
"Normal": "Normální",
|
||||
"Only signup": "Pouze registrace",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Režim výběru organizace",
|
||||
"Org choice mode - Tooltip": "Režim výběru organizace - popisek",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Nejprve povolte \\\"Přihlašovací relaci\\\" před povolením \\\"Automatického přihlášení\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Keine Verifizierung",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Nur Registrierung",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Organisationsauswahlmodus",
|
||||
"Org choice mode - Tooltip": "Organisationsauswahlmodus – Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Bitte aktivieren Sie zuerst \\\"Anmeldesitzung\\\", bevor Sie \\\"Automatische Anmeldung\\\" aktivieren.",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "No verification",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Only signup",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "The smaller the value, the higher it ranks in the Apps page",
|
||||
"Org choice mode": "Org choice mode",
|
||||
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Sin verificación",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Solo registro",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Modo de selección de organización",
|
||||
"Org choice mode - Tooltip": "Modo de selección de organización - Información adicional",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Por favor, habilita \\\"Sesión de inicio de sesión\\\" primero antes de habilitar \\\"Inicio de sesión automático\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "بدون تأیید",
|
||||
"Normal": "عادی",
|
||||
"Only signup": "فقط ثبتنام",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "حالت انتخاب سازمان",
|
||||
"Org choice mode - Tooltip": "حالت انتخاب سازمان - راهنمای ابزار",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "لطفاً قبل فعالسازی «ورود خودکار»، ابتدا «جلسه ورود» را فعال کنید",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Ei vahvistusta",
|
||||
"Normal": "Normaali",
|
||||
"Only signup": "Vain rekisteröityminen",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Organisaation valintatila",
|
||||
"Org choice mode - Tooltip": "Organisaation valintatila - työkalupala",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Ota \\\"Kirjautumisession\\\" käyttöön ennen \\\"Automaattisen kirjautumisen\\\" ottamista käyttöön",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Aucune vérification",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Inscription uniquement",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Mode de choix d'organisation",
|
||||
"Org choice mode - Tooltip": "Mode de choix d'organisation - Infobulle",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Veuillez activer \\\"Session de connexion\\\" avant d'activer \\\"Connexion automatique\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "ללא אימות",
|
||||
"Normal": "רגיל",
|
||||
"Only signup": "הרשמה בלבד",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "מצב בחירת ארגון",
|
||||
"Org choice mode - Tooltip": "מצב בחירת ארגון - תיאור",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "אנא הפעל \\\"פתיחת جلسة כניסה\\\" תחילה לפני הפעלת \\\"כניסה אוטומטית\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Tidak ada verifikasi",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Hanya mendaftar",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Mode pilihan organisasi",
|
||||
"Org choice mode - Tooltip": "Mode pilihan organisasi - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Harap aktifkan \\\"Sesi masuk\\\" terlebih dahulu sebelum mengaktifkan \\\"Masuk otomatis\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Nessuna verifica",
|
||||
"Normal": "Normale",
|
||||
"Only signup": "Solo registrazione",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Modalità scelta organizzazione",
|
||||
"Org choice mode - Tooltip": "Modalità scelta organizzazione - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Abilita prima \\\"Sessione di accesso\\\" prima di abilitare \\\"Accesso automatico\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "検証なし",
|
||||
"Normal": "通常",
|
||||
"Only signup": "サインアップのみ",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "組織選択モード",
|
||||
"Org choice mode - Tooltip": "組織選択モード - ツールチップ",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "\\\"自動サインイン\\\"を有効にする前に、まず\\\"サインインセッション\\\"を有効にしてください",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Тексерусіз",
|
||||
"Normal": "Қалыпты",
|
||||
"Only signup": "Тек тіркелу",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Ұйым таңдау режимі",
|
||||
"Org choice mode - Tooltip": "Ұйым таңдау режимі - Қысқаша түсінік",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Автоматты кіруді қосу алдында алдымен \\\"Кіру сессиясын\\\" қосыңыз",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "검증 없음",
|
||||
"Normal": "일반",
|
||||
"Only signup": "가입만",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "조직 선택 모드",
|
||||
"Org choice mode - Tooltip": "조직 선택 모드 - 툴팁",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "\\\"자동 로그인\\\"을 활성화하기 전에 \\\"로그인 세션\\\"을 먼저 활성화하세요.",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Tiada pengesahan",
|
||||
"Normal": "Biasa",
|
||||
"Only signup": "Hanya pendaftaran",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Mod pilihan organisasi",
|
||||
"Org choice mode - Tooltip": "Mod pilihan organisasi - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Sila dayakan \\\"Sesi log masuk\\\" terlebih dahulu sebelum mendayakan \\\"Log masuk automatik\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Geen verificatie",
|
||||
"Normal": "Normaal",
|
||||
"Only signup": "Alleen registratie",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Organisatiekeuzemodus",
|
||||
"Org choice mode - Tooltip": "Organisatiekeuzemodus - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Schakel eerst \\\"Aanmeldsessie\\\" in voordat je \\\"Automatische aanmelding\\\" inschakelt",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Brak weryfikacji",
|
||||
"Normal": "Normalny",
|
||||
"Only signup": "Tylko rejestracja",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Tryb wyboru organizacji",
|
||||
"Org choice mode - Tooltip": "Tryb wyboru organizacji - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Najpierw włącz \\\"sesję logowania\\\", zanim włączysz \\\"automatyczne logowanie\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Sem verificação",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Apenas cadastro",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Modo de escolha da organização",
|
||||
"Org choice mode - Tooltip": "Dica: modo de escolha da organização",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Por favor, habilite a \\\"Sessão de login\\\" primeiro antes de habilitar o \\\"Login automático\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Без проверки",
|
||||
"Normal": "Обычный",
|
||||
"Only signup": "Только регистрация",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Режим выбора организации",
|
||||
"Org choice mode - Tooltip": "Подсказка: режим выбора организации",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Пожалуйста, сначала включите «Сессия входа» перед включением «Автоматического входа»",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Bez overenia",
|
||||
"Normal": "Normálny",
|
||||
"Only signup": "Len registrácia",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Režim výberu organizácie",
|
||||
"Org choice mode - Tooltip": "Režim výberu organizácie - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Najprv povoľte \\\"Reláciu prihlásenia\\\" pred povolením \\\"Automatického prihlásenia\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Tiada pengesahan",
|
||||
"Normal": "Biasa",
|
||||
"Only signup": "Hanya pendaftaran",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Mod pilihan organisasi",
|
||||
"Org choice mode - Tooltip": "Mod pilihan organisasi - Tooltip",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Sila dayakan \\\"Sesi log masuk\\\" terlebih dahulu sebelum mendayakan \\\"Log masuk automatik\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Doğrulama yok",
|
||||
"Normal": "Normal",
|
||||
"Only signup": "Yalnızca kayıt",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Organizasyon seçim modu",
|
||||
"Org choice mode - Tooltip": "Organizasyon seçim modu - Araç ipucu",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Lütfen \\\"Oturum açma oturumu\\\"nu etkinleştirmeden önce \\\"Otomatik oturum açma\\\"yı etkinleştirin",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Без підтвердження",
|
||||
"Normal": "нормальний",
|
||||
"Only signup": "Тільки реєстрація",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Режим вибору організації",
|
||||
"Org choice mode - Tooltip": "Режим вибору організації – підказка",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Спочатку увімкніть \\\"Сесію входу\\\", перш ніж увімкнути \\\"Автоматичний вхід\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "Không xác minh",
|
||||
"Normal": "Bình thường",
|
||||
"Only signup": "Chỉ đăng ký",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "Order - Tooltip",
|
||||
"Org choice mode": "Chế độ chọn tổ chức",
|
||||
"Org choice mode - Tooltip": "Gợi ý chế độ chọn tổ chức",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Vui lòng kích hoạt \\\"Phiên đăng nhập\\\" trước khi kích hoạt \\\"Đăng nhập tự động\\\"",
|
||||
|
@@ -92,6 +92,8 @@
|
||||
"No verification": "不校验",
|
||||
"Normal": "标准",
|
||||
"Only signup": "仅注册",
|
||||
"Order": "Order",
|
||||
"Order - Tooltip": "数值越小,在应用列表页面中排序越靠前",
|
||||
"Org choice mode": "组织选择模式",
|
||||
"Org choice mode - Tooltip": "采用什么方式选择要登录的组织",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "开启 \\\"保持登录会话\\\" 后才能开启 \\\"自动登录\\\"",
|
||||
|
@@ -67,6 +67,8 @@ class AccountTable extends React.Component {
|
||||
{name: "ID", label: i18next.t("general:ID")},
|
||||
{name: "Name", label: i18next.t("general:Name")},
|
||||
{name: "Display name", label: i18next.t("general:Display name")},
|
||||
{name: "First name", label: i18next.t("general:First name")},
|
||||
{name: "Last name", label: i18next.t("general:Last name")},
|
||||
{name: "Avatar", label: i18next.t("general:Avatar")},
|
||||
{name: "User type", label: i18next.t("general:User type")},
|
||||
{name: "Password", label: i18next.t("general:Password")},
|
||||
|
@@ -94,6 +94,8 @@ class SignupTable extends React.Component {
|
||||
{name: "Username", displayName: i18next.t("signup:Username")},
|
||||
{name: "ID", displayName: i18next.t("general:ID")},
|
||||
{name: "Display name", displayName: i18next.t("general:Display name")},
|
||||
{name: "First name", displayName: i18next.t("general:First name")},
|
||||
{name: "Last name", displayName: i18next.t("general:Last name")},
|
||||
{name: "Affiliation", displayName: i18next.t("user:Affiliation")},
|
||||
{name: "Gender", displayName: i18next.t("user:Gender")},
|
||||
{name: "Bio", displayName: i18next.t("user:Bio")},
|
||||
|
Reference in New Issue
Block a user