mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-14 08:03:23 +08:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
b57b64fc36 | |||
0d239ba1cf | |||
8927e08217 | |||
0636069584 | |||
4d0f73c84e | |||
74a2478e10 | |||
acc6f3e887 | |||
185ab9750a | |||
48adc050d6 | |||
b0e318c9db | |||
f9a6efc00f | |||
bd4a6775dd | |||
e3a43d0062 | |||
0cf281cac0 | |||
7322f67ae0 | |||
b927c6d7b4 | |||
01212cd1f3 | |||
bf55f94d41 | |||
f14711d315 | |||
58e1c28f7c | |||
922b19c64b |
@ -25,6 +25,8 @@ enableErrorMask = false
|
||||
enableGzip = true
|
||||
inactiveTimeoutMinutes =
|
||||
ldapServerPort = 389
|
||||
ldapsCertId = ""
|
||||
ldapsServerPort = 636
|
||||
radiusServerPort = 1812
|
||||
radiusSecret = "secret"
|
||||
quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
|
||||
|
@ -475,6 +475,16 @@ func (c *ApiController) SetPassword() {
|
||||
|
||||
userId := util.GetId(userOwner, userName)
|
||||
|
||||
user, err := object.GetUser(userId)
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
}
|
||||
if user == nil {
|
||||
c.ResponseError(fmt.Sprintf(c.T("general:The user: %s doesn't exist"), userId))
|
||||
return
|
||||
}
|
||||
|
||||
requestUserId := c.GetSessionUsername()
|
||||
if requestUserId == "" && code == "" {
|
||||
c.ResponseError(c.T("general:Please login first"), "Please login first")
|
||||
@ -518,7 +528,11 @@ func (c *ApiController) SetPassword() {
|
||||
}
|
||||
}
|
||||
} else if code == "" {
|
||||
err = object.CheckPassword(targetUser, oldPassword, c.GetAcceptLanguage())
|
||||
if user.Ldap == "" {
|
||||
err = object.CheckPassword(targetUser, oldPassword, c.GetAcceptLanguage())
|
||||
} else {
|
||||
err = object.CheckLdapUserPassword(targetUser, oldPassword, c.GetAcceptLanguage())
|
||||
}
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
@ -563,7 +577,12 @@ func (c *ApiController) SetPassword() {
|
||||
targetUser.NeedUpdatePassword = false
|
||||
targetUser.LastChangePasswordTime = util.GetCurrentTime()
|
||||
|
||||
_, err = object.UpdateUser(userId, targetUser, []string{"password", "need_update_password", "password_type", "last_change_password_time"}, false)
|
||||
if user.Ldap == "" {
|
||||
_, err = object.UpdateUser(userId, targetUser, []string{"password", "need_update_password", "password_type", "last_change_password_time"}, false)
|
||||
} else {
|
||||
err = object.ResetLdapPassword(targetUser, newPassword, c.GetAcceptLanguage())
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
|
1
go.mod
1
go.mod
@ -63,6 +63,7 @@ require (
|
||||
golang.org/x/crypto v0.21.0
|
||||
golang.org/x/net v0.21.0
|
||||
golang.org/x/oauth2 v0.17.0
|
||||
golang.org/x/text v0.14.0
|
||||
google.golang.org/api v0.150.0
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/square/go-jose.v2 v2.6.0
|
||||
|
@ -188,10 +188,23 @@ type GitHubUserInfo struct {
|
||||
} `json:"plan"`
|
||||
}
|
||||
|
||||
type GitHubUserEmailInfo struct {
|
||||
Email string `json:"email"`
|
||||
Primary bool `json:"primary"`
|
||||
Verified bool `json:"verified"`
|
||||
Visibility string `json:"visibility"`
|
||||
}
|
||||
|
||||
type GitHubErrorInfo struct {
|
||||
Message string `json:"message"`
|
||||
DocumentationUrl string `json:"documentation_url"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error) {
|
||||
req, err := http.NewRequest("GET", "https://api.github.com/user", nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return nil, err
|
||||
}
|
||||
req.Header.Add("Authorization", "token "+token.AccessToken)
|
||||
resp, err := idp.Client.Do(req)
|
||||
@ -212,6 +225,41 @@ func (idp *GithubIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if githubUserInfo.Email == "" {
|
||||
reqEmail, err := http.NewRequest("GET", "https://api.github.com/user/emails", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reqEmail.Header.Add("Authorization", "token "+token.AccessToken)
|
||||
respEmail, err := idp.Client.Do(reqEmail)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer respEmail.Body.Close()
|
||||
emailBody, err := io.ReadAll(respEmail.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if respEmail.StatusCode != 200 {
|
||||
var errMessage GitHubErrorInfo
|
||||
err = json.Unmarshal(emailBody, &errMessage)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return nil, fmt.Errorf("%s, %s", errMessage.Message, errMessage.DocumentationUrl)
|
||||
}
|
||||
|
||||
var userEmails []GitHubUserEmailInfo
|
||||
err = json.Unmarshal(emailBody, &userEmails)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
githubUserInfo.Email = idp.getEmailFromEmailsResult(userEmails)
|
||||
}
|
||||
|
||||
userInfo := UserInfo{
|
||||
Id: strconv.Itoa(githubUserInfo.Id),
|
||||
Username: githubUserInfo.Login,
|
||||
@ -248,3 +296,27 @@ func (idp *GithubIdProvider) postWithBody(body interface{}, url string) ([]byte,
|
||||
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (idp *GithubIdProvider) getEmailFromEmailsResult(emailInfo []GitHubUserEmailInfo) string {
|
||||
primaryEmail := ""
|
||||
verifiedEmail := ""
|
||||
|
||||
for _, addr := range emailInfo {
|
||||
if !addr.Verified || strings.Contains(addr.Email, "users.noreply.github.com") {
|
||||
continue
|
||||
}
|
||||
|
||||
if addr.Primary {
|
||||
primaryEmail = addr.Email
|
||||
break
|
||||
} else if verifiedEmail == "" {
|
||||
verifiedEmail = addr.Email
|
||||
}
|
||||
}
|
||||
|
||||
if primaryEmail != "" {
|
||||
return primaryEmail
|
||||
}
|
||||
|
||||
return verifiedEmail
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
package ldap
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"hash/fnv"
|
||||
"log"
|
||||
@ -27,21 +28,68 @@ import (
|
||||
|
||||
func StartLdapServer() {
|
||||
ldapServerPort := conf.GetConfigString("ldapServerPort")
|
||||
if ldapServerPort == "" || ldapServerPort == "0" {
|
||||
return
|
||||
}
|
||||
ldapsServerPort := conf.GetConfigString("ldapsServerPort")
|
||||
|
||||
server := ldap.NewServer()
|
||||
serverSsl := ldap.NewServer()
|
||||
routes := ldap.NewRouteMux()
|
||||
|
||||
routes.Bind(handleBind)
|
||||
routes.Search(handleSearch).Label(" SEARCH****")
|
||||
|
||||
server.Handle(routes)
|
||||
err := server.ListenAndServe("0.0.0.0:" + ldapServerPort)
|
||||
serverSsl.Handle(routes)
|
||||
go func() {
|
||||
if ldapServerPort == "" || ldapServerPort == "0" {
|
||||
return
|
||||
}
|
||||
err := server.ListenAndServe("0.0.0.0:" + ldapServerPort)
|
||||
if err != nil {
|
||||
log.Printf("StartLdapServer() failed, err = %s", err.Error())
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
if ldapsServerPort == "" || ldapsServerPort == "0" {
|
||||
return
|
||||
}
|
||||
ldapsCertId := conf.GetConfigString("ldapsCertId")
|
||||
if ldapsCertId == "" {
|
||||
return
|
||||
}
|
||||
config, err := getTLSconfig(ldapsCertId)
|
||||
if err != nil {
|
||||
log.Printf("StartLdapsServer() failed, err = %s", err.Error())
|
||||
return
|
||||
}
|
||||
secureConn := func(s *ldap.Server) {
|
||||
s.Listener = tls.NewListener(s.Listener, config)
|
||||
}
|
||||
err = serverSsl.ListenAndServe("0.0.0.0:"+ldapsServerPort, secureConn)
|
||||
if err != nil {
|
||||
log.Printf("StartLdapsServer() failed, err = %s", err.Error())
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func getTLSconfig(ldapsCertId string) (*tls.Config, error) {
|
||||
rawCert, err := object.GetCert(ldapsCertId)
|
||||
if err != nil {
|
||||
log.Printf("StartLdapServer() failed, err = %s", err.Error())
|
||||
return nil, err
|
||||
}
|
||||
if rawCert == nil {
|
||||
return nil, fmt.Errorf("cert is empty")
|
||||
}
|
||||
cert, err := tls.X509KeyPair([]byte(rawCert.Certificate), []byte(rawCert.PrivateKey))
|
||||
if err != nil {
|
||||
return &tls.Config{}, err
|
||||
}
|
||||
|
||||
return &tls.Config{
|
||||
MinVersion: tls.VersionTLS10,
|
||||
MaxVersion: tls.VersionTLS13,
|
||||
Certificates: []tls.Certificate{cert},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func handleBind(w ldap.ResponseWriter, m *ldap.Message) {
|
||||
|
@ -273,7 +273,7 @@ func CheckPasswordComplexity(user *User, password string) string {
|
||||
return CheckPasswordComplexityByOrg(organization, password)
|
||||
}
|
||||
|
||||
func checkLdapUserPassword(user *User, password string, lang string) error {
|
||||
func CheckLdapUserPassword(user *User, password string, lang string) error {
|
||||
ldaps, err := GetLdaps(user.Owner)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -368,7 +368,7 @@ func CheckUserPassword(organization string, username string, password string, la
|
||||
}
|
||||
|
||||
// only for LDAP users
|
||||
err = checkLdapUserPassword(user, password, lang)
|
||||
err = CheckLdapUserPassword(user, password, lang)
|
||||
if err != nil {
|
||||
if err.Error() == "user not exist" {
|
||||
return nil, fmt.Errorf(i18n.Translate(lang, "check:The user: %s doesn't exist in LDAP server"), username)
|
||||
|
@ -19,234 +19,81 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Dashboard struct {
|
||||
OrganizationCounts []int `json:"organizationCounts"`
|
||||
UserCounts []int `json:"userCounts"`
|
||||
ProviderCounts []int `json:"providerCounts"`
|
||||
ApplicationCounts []int `json:"applicationCounts"`
|
||||
SubscriptionCounts []int `json:"subscriptionCounts"`
|
||||
RoleCounts []int `json:"roleCounts"`
|
||||
GroupCounts []int `json:"groupCounts"`
|
||||
ResourceCounts []int `json:"resourceCounts"`
|
||||
CertCounts []int `json:"certCounts"`
|
||||
PermissionCounts []int `json:"permissionCounts"`
|
||||
TransactionCounts []int `json:"transactionCounts"`
|
||||
type DashboardDateItem struct {
|
||||
CreatedTime string `json:"createTime"`
|
||||
}
|
||||
|
||||
func GetDashboard(owner string) (*Dashboard, error) {
|
||||
type DashboardMapItem struct {
|
||||
dashboardDateItems []DashboardDateItem
|
||||
itemCount int64
|
||||
}
|
||||
|
||||
func GetDashboard(owner string) (*map[string][]int64, error) {
|
||||
if owner == "All" {
|
||||
owner = ""
|
||||
}
|
||||
|
||||
dashboard := &Dashboard{
|
||||
OrganizationCounts: make([]int, 31),
|
||||
UserCounts: make([]int, 31),
|
||||
ProviderCounts: make([]int, 31),
|
||||
ApplicationCounts: make([]int, 31),
|
||||
SubscriptionCounts: make([]int, 31),
|
||||
RoleCounts: make([]int, 31),
|
||||
GroupCounts: make([]int, 31),
|
||||
ResourceCounts: make([]int, 31),
|
||||
CertCounts: make([]int, 31),
|
||||
PermissionCounts: make([]int, 31),
|
||||
TransactionCounts: make([]int, 31),
|
||||
dashboard := make(map[string][]int64)
|
||||
dashboardMap := sync.Map{}
|
||||
tableNames := []string{"organization", "user", "provider", "application", "subscription", "role", "group", "resource", "cert", "permission", "transaction", "model", "adapter", "enforcer"}
|
||||
|
||||
time30day := time.Now().AddDate(0, 0, -30)
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
wg.Add(len(tableNames))
|
||||
|
||||
for _, tableName := range tableNames {
|
||||
dashboard[tableName+"Counts"] = make([]int64, 31)
|
||||
tableName := tableName
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
dashboardDateItems := []DashboardDateItem{}
|
||||
var countResult int64
|
||||
|
||||
dbQueryBefore := ormer.Engine.Cols("created_time")
|
||||
dbQueryAfter := ormer.Engine.Cols("created_time")
|
||||
|
||||
if owner != "" {
|
||||
dbQueryAfter = dbQueryAfter.And("owner = ?", owner)
|
||||
dbQueryBefore = dbQueryBefore.And("owner = ?", owner)
|
||||
}
|
||||
|
||||
if countResult, err = dbQueryBefore.And("created_time < ?", time30day).Table(tableName).Count(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err = dbQueryAfter.And("created_time >= ?", time30day).Table(tableName).Find(&dashboardDateItems); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
dashboardMap.Store(tableName, DashboardMapItem{
|
||||
dashboardDateItems: dashboardDateItems,
|
||||
itemCount: countResult,
|
||||
})
|
||||
}()
|
||||
}
|
||||
|
||||
organizations := []Organization{}
|
||||
users := []User{}
|
||||
providers := []Provider{}
|
||||
applications := []Application{}
|
||||
subscriptions := []Subscription{}
|
||||
roles := []Role{}
|
||||
groups := []Group{}
|
||||
resources := []Resource{}
|
||||
certs := []Cert{}
|
||||
permissions := []Permission{}
|
||||
transactions := []Transaction{}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(11)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ormer.Engine.Find(&organizations, &Organization{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&users, &User{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&providers, &Provider{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&applications, &Application{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&subscriptions, &Subscription{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&roles, &Role{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
if err := ormer.Engine.Find(&groups, &Group{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ormer.Engine.Find(&resources, &Resource{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ormer.Engine.Find(&certs, &Cert{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ormer.Engine.Find(&permissions, &Permission{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ormer.Engine.Find(&transactions, &Transaction{Owner: owner}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
wg.Wait()
|
||||
|
||||
nowTime := time.Now()
|
||||
for i := 30; i >= 0; i-- {
|
||||
cutTime := nowTime.AddDate(0, 0, -i)
|
||||
dashboard.OrganizationCounts[30-i] = countCreatedBefore(organizations, cutTime)
|
||||
dashboard.UserCounts[30-i] = countCreatedBefore(users, cutTime)
|
||||
dashboard.ProviderCounts[30-i] = countCreatedBefore(providers, cutTime)
|
||||
dashboard.ApplicationCounts[30-i] = countCreatedBefore(applications, cutTime)
|
||||
dashboard.SubscriptionCounts[30-i] = countCreatedBefore(subscriptions, cutTime)
|
||||
dashboard.RoleCounts[30-i] = countCreatedBefore(roles, cutTime)
|
||||
dashboard.GroupCounts[30-i] = countCreatedBefore(groups, cutTime)
|
||||
dashboard.ResourceCounts[30-i] = countCreatedBefore(resources, cutTime)
|
||||
dashboard.CertCounts[30-i] = countCreatedBefore(certs, cutTime)
|
||||
dashboard.PermissionCounts[30-i] = countCreatedBefore(permissions, cutTime)
|
||||
dashboard.TransactionCounts[30-i] = countCreatedBefore(transactions, cutTime)
|
||||
for _, tableName := range tableNames {
|
||||
item, exist := dashboardMap.Load(tableName)
|
||||
if !exist {
|
||||
continue
|
||||
}
|
||||
dashboard[tableName+"Counts"][30-i] = countCreatedBefore(item.(DashboardMapItem), cutTime)
|
||||
}
|
||||
}
|
||||
return dashboard, nil
|
||||
return &dashboard, nil
|
||||
}
|
||||
|
||||
func countCreatedBefore(objects interface{}, before time.Time) int {
|
||||
count := 0
|
||||
switch obj := objects.(type) {
|
||||
case []Organization:
|
||||
for _, o := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", o.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []User:
|
||||
for _, u := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", u.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Provider:
|
||||
for _, p := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", p.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Application:
|
||||
for _, a := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", a.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Subscription:
|
||||
for _, s := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", s.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Role:
|
||||
for _, r := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", r.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Group:
|
||||
for _, g := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", g.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Resource:
|
||||
for _, r := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", r.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Cert:
|
||||
for _, c := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", c.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Permission:
|
||||
for _, p := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", p.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
case []Transaction:
|
||||
for _, t := range obj {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", t.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
func countCreatedBefore(dashboardMapItem DashboardMapItem, before time.Time) int64 {
|
||||
count := dashboardMapItem.itemCount
|
||||
for _, e := range dashboardMapItem.dashboardDateItems {
|
||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", e.CreatedTime)
|
||||
if createdTime.Before(before) {
|
||||
count++
|
||||
}
|
||||
}
|
||||
return count
|
||||
|
@ -20,9 +20,11 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/casdoor/casdoor/conf"
|
||||
"github.com/casdoor/casdoor/i18n"
|
||||
"github.com/casdoor/casdoor/util"
|
||||
goldap "github.com/go-ldap/ldap/v3"
|
||||
"github.com/thanhpk/randstr"
|
||||
"golang.org/x/text/encoding/unicode"
|
||||
)
|
||||
|
||||
type LdapConn struct {
|
||||
@ -371,6 +373,64 @@ func GetExistUuids(owner string, uuids []string) ([]string, error) {
|
||||
return existUuids, nil
|
||||
}
|
||||
|
||||
func ResetLdapPassword(user *User, newPassword string, lang string) error {
|
||||
ldaps, err := GetLdaps(user.Owner)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, ldapServer := range ldaps {
|
||||
conn, err := ldapServer.GetLdapConn()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
searchReq := goldap.NewSearchRequest(ldapServer.BaseDn, goldap.ScopeWholeSubtree, goldap.NeverDerefAliases,
|
||||
0, 0, false, ldapServer.buildAuthFilterString(user), []string{}, nil)
|
||||
|
||||
searchResult, err := conn.Conn.Search(searchReq)
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
if len(searchResult.Entries) == 0 {
|
||||
conn.Close()
|
||||
continue
|
||||
}
|
||||
if len(searchResult.Entries) > 1 {
|
||||
conn.Close()
|
||||
return fmt.Errorf(i18n.Translate(lang, "check:Multiple accounts with same uid, please check your ldap server"))
|
||||
}
|
||||
|
||||
userDn := searchResult.Entries[0].DN
|
||||
|
||||
var pwdEncoded string
|
||||
modifyPasswordRequest := goldap.NewModifyRequest(userDn, nil)
|
||||
if conn.IsAD {
|
||||
utf16 := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
|
||||
pwdEncoded, err := utf16.NewEncoder().String("\"" + newPassword + "\"")
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
return err
|
||||
}
|
||||
modifyPasswordRequest.Replace("unicodePwd", []string{pwdEncoded})
|
||||
modifyPasswordRequest.Replace("userAccountControl", []string{"512"})
|
||||
} else {
|
||||
pwdEncoded = newPassword
|
||||
modifyPasswordRequest.Replace("userPassword", []string{pwdEncoded})
|
||||
}
|
||||
|
||||
err = conn.Conn.Modify(modifyPasswordRequest)
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
return err
|
||||
}
|
||||
conn.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ldapUser *LdapUser) buildLdapUserName(owner string) (string, error) {
|
||||
user := User{}
|
||||
uidWithNumber := fmt.Sprintf("%s_%s", ldapUser.Uid, ldapUser.UidNumber)
|
||||
|
@ -421,7 +421,7 @@ func FromProviderToIdpInfo(ctx *context.Context, provider *Provider) *idp.Provid
|
||||
providerInfo.ClientId = provider.ClientId2
|
||||
providerInfo.ClientSecret = provider.ClientSecret2
|
||||
}
|
||||
} else if provider.Type == "AzureAD" || provider.Type == "AzureADB2C" || provider.Type == "ADFS" || provider.Type == "Okta" {
|
||||
} else if provider.Type == "ADFS" || provider.Type == "AzureAD" || provider.Type == "AzureADB2C" || provider.Type == "Casdoor" || provider.Type == "Okta" {
|
||||
providerInfo.HostUrl = provider.Domain
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ var (
|
||||
|
||||
func init() {
|
||||
logPostOnly = conf.GetConfigBool("logPostOnly")
|
||||
passwordRegex = regexp.MustCompile("\"password\":\".+\"")
|
||||
passwordRegex = regexp.MustCompile("\"password\":\"([^\"]*?)\"")
|
||||
}
|
||||
|
||||
type Record struct {
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -184,6 +185,15 @@ func StoreCasTokenForProxyTicket(token *CasAuthenticationSuccess, targetService,
|
||||
return proxyTicket
|
||||
}
|
||||
|
||||
func escapeXMLText(input string) (string, error) {
|
||||
var sb strings.Builder
|
||||
err := xml.EscapeText(&sb, []byte(input))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return sb.String(), nil
|
||||
}
|
||||
|
||||
func GenerateCasToken(userId string, service string) (string, error) {
|
||||
user, err := GetUser(userId)
|
||||
if err != nil {
|
||||
@ -225,6 +235,11 @@ func GenerateCasToken(userId string, service string) (string, error) {
|
||||
}
|
||||
|
||||
if value != "" {
|
||||
if escapedValue, err := escapeXMLText(value); err != nil {
|
||||
return "", err
|
||||
} else {
|
||||
value = escapedValue
|
||||
}
|
||||
authenticationSuccess.Attributes.UserAttributes.Attributes = append(authenticationSuccess.Attributes.UserAttributes.Attributes, &CasNamedAttribute{
|
||||
Name: k,
|
||||
Value: value,
|
||||
|
@ -504,7 +504,7 @@ func GetPasswordToken(application *Application, username string, password string
|
||||
}
|
||||
|
||||
if user.Ldap != "" {
|
||||
err = checkLdapUserPassword(user, password, "en")
|
||||
err = CheckLdapUserPassword(user, password, "en")
|
||||
} else {
|
||||
err = CheckPassword(user, password, "en")
|
||||
}
|
||||
|
@ -237,6 +237,7 @@ type MfaAccount struct {
|
||||
AccountName string `xorm:"varchar(100)" json:"accountName"`
|
||||
Issuer string `xorm:"varchar(100)" json:"issuer"`
|
||||
SecretKey string `xorm:"varchar(100)" json:"secretKey"`
|
||||
Origin string `xorm:"varchar(100)" json:"origin"`
|
||||
}
|
||||
|
||||
type FaceId struct {
|
||||
@ -679,6 +680,10 @@ func UpdateUser(id string, user *User, columns []string, isAdmin bool) (bool, er
|
||||
user.Password = oldUser.Password
|
||||
}
|
||||
|
||||
if user.Id != oldUser.Id && user.Id == "" {
|
||||
user.Id = oldUser.Id
|
||||
}
|
||||
|
||||
if user.Avatar != oldUser.Avatar && user.Avatar != "" && user.PermanentAvatar != "*" {
|
||||
user.PermanentAvatar, err = getPermanentAvatarUrl(user.Owner, user.Name, user.Avatar, false)
|
||||
if err != nil {
|
||||
|
@ -57,7 +57,7 @@ type VerificationRecord struct {
|
||||
Receiver string `xorm:"varchar(100) index notnull" json:"receiver"`
|
||||
Code string `xorm:"varchar(10) notnull" json:"code"`
|
||||
Time int64 `xorm:"notnull" json:"time"`
|
||||
IsUsed bool
|
||||
IsUsed bool `xorm:"notnull" json:"isUsed"`
|
||||
}
|
||||
|
||||
func IsAllowSend(user *User, remoteAddr, recordType string) error {
|
||||
|
21
storage/cucloud_oss.go
Normal file
21
storage/cucloud_oss.go
Normal file
@ -0,0 +1,21 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
awss3 "github.com/aws/aws-sdk-go/service/s3"
|
||||
"github.com/casdoor/oss"
|
||||
"github.com/casdoor/oss/s3"
|
||||
)
|
||||
|
||||
func NewCUCloudOssStorageProvider(clientId string, clientSecret string, region string, bucket string, endpoint string) oss.StorageInterface {
|
||||
sp := s3.New(&s3.Config{
|
||||
AccessID: clientId,
|
||||
AccessKey: clientSecret,
|
||||
Region: region,
|
||||
Bucket: bucket,
|
||||
Endpoint: endpoint,
|
||||
S3Endpoint: endpoint,
|
||||
ACL: awss3.BucketCannedACLPublicRead,
|
||||
})
|
||||
|
||||
return sp
|
||||
}
|
@ -23,7 +23,10 @@ func GetStorageProvider(providerType string, clientId string, clientSecret strin
|
||||
case "AWS S3":
|
||||
return NewAwsS3StorageProvider(clientId, clientSecret, region, bucket, endpoint), nil
|
||||
case "MinIO":
|
||||
return NewMinIOS3StorageProvider(clientId, clientSecret, "_", bucket, endpoint), nil
|
||||
if region == "" {
|
||||
region = "_"
|
||||
}
|
||||
return NewMinIOS3StorageProvider(clientId, clientSecret, region, bucket, endpoint), nil
|
||||
case "Aliyun OSS":
|
||||
return NewAliyunOssStorageProvider(clientId, clientSecret, region, bucket, endpoint), nil
|
||||
case "Tencent Cloud COS":
|
||||
@ -38,6 +41,8 @@ func GetStorageProvider(providerType string, clientId string, clientSecret strin
|
||||
return NewSynologyNasStorageProvider(clientId, clientSecret, endpoint), nil
|
||||
case "Casdoor":
|
||||
return NewCasdoorStorageProvider(providerType, clientId, clientSecret, region, bucket, endpoint, cert, content), nil
|
||||
case "CUCloud OSS":
|
||||
return NewCUCloudOssStorageProvider(clientId, clientSecret, region, bucket, endpoint), nil
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
|
@ -308,7 +308,7 @@ class App extends Component {
|
||||
AI Assistant
|
||||
</a>
|
||||
</Tooltip>
|
||||
<a className="custom-link" style={{float: "right", marginTop: "2px"}} target="_blank" rel="noreferrer" href={"https://ai.casbin.com"}>
|
||||
<a className="custom-link" style={{float: "right", marginTop: "2px"}} target="_blank" rel="noreferrer" href={`${Conf.AiAssistantUrl}`}>
|
||||
<ShareAltOutlined className="custom-link" style={{fontSize: "20px", color: "rgb(140,140,140)"}} />
|
||||
</a>
|
||||
<a className="custom-link" style={{float: "right", marginRight: "30px", marginTop: "2px"}} target="_blank" rel="noreferrer" href={"https://github.com/casibase/casibase"}>
|
||||
@ -326,7 +326,7 @@ class App extends Component {
|
||||
}}
|
||||
visible={this.state.isAiAssistantOpen}
|
||||
>
|
||||
<iframe id="iframeHelper" title={"iframeHelper"} src={"https://ai.casbin.com/?isRaw=1"} width="100%" height="100%" scrolling="no" frameBorder="no" />
|
||||
<iframe id="iframeHelper" title={"iframeHelper"} src={`${Conf.AiAssistantUrl}/?isRaw=1`} width="100%" height="100%" scrolling="no" frameBorder="no" />
|
||||
</Drawer>
|
||||
);
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import "codemirror/mode/properties/properties";
|
||||
import * as Setting from "./Setting";
|
||||
import IframeEditor from "./IframeEditor";
|
||||
import {Tabs} from "antd";
|
||||
import i18next from "i18next";
|
||||
|
||||
const {TabPane} = Tabs;
|
||||
|
||||
@ -68,8 +69,8 @@ const CasbinEditor = ({model, onModelTextChange}) => {
|
||||
return (
|
||||
<div style={{height: "100%", width: "100%", display: "flex", flexDirection: "column"}}>
|
||||
<Tabs activeKey={activeKey} onChange={handleTabChange} style={{flex: "0 0 auto", marginTop: "-10px"}}>
|
||||
<TabPane tab="Basic Editor" key="basic" />
|
||||
<TabPane tab="Advanced Editor" key="advanced" />
|
||||
<TabPane tab={i18next.t("model:Basic Editor")} key="basic" />
|
||||
<TabPane tab={i18next.t("model:Advanced Editor")} key="advanced" />
|
||||
</Tabs>
|
||||
<div style={{flex: "1 1 auto", overflow: "hidden"}}>
|
||||
{activeKey === "advanced" ? (
|
||||
|
@ -31,3 +31,6 @@ export const ThemeDefault = {
|
||||
};
|
||||
|
||||
export const CustomFooter = null;
|
||||
|
||||
// Blank or null to hide Ai Assistant button
|
||||
export const AiAssistantUrl = "https://ai.casbin.com";
|
||||
|
@ -17,6 +17,7 @@ import React, {forwardRef, useEffect, useImperativeHandle, useRef, useState} fro
|
||||
const IframeEditor = forwardRef(({initialModelText, onModelTextChange}, ref) => {
|
||||
const iframeRef = useRef(null);
|
||||
const [iframeReady, setIframeReady] = useState(false);
|
||||
const currentLang = localStorage.getItem("language") || "en";
|
||||
|
||||
useEffect(() => {
|
||||
const handleMessage = (event) => {
|
||||
@ -26,24 +27,31 @@ const IframeEditor = forwardRef(({initialModelText, onModelTextChange}, ref) =>
|
||||
onModelTextChange(event.data.modelText);
|
||||
} else if (event.data.type === "iframeReady") {
|
||||
setIframeReady(true);
|
||||
iframeRef.current?.contentWindow.postMessage({
|
||||
type: "initializeModel",
|
||||
modelText: initialModelText,
|
||||
}, "*");
|
||||
if (initialModelText && iframeRef.current?.contentWindow) {
|
||||
iframeRef.current.contentWindow.postMessage({
|
||||
type: "initializeModel",
|
||||
modelText: initialModelText,
|
||||
lang: currentLang,
|
||||
}, "*");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener("message", handleMessage);
|
||||
return () => window.removeEventListener("message", handleMessage);
|
||||
}, [onModelTextChange, initialModelText]);
|
||||
}, [onModelTextChange, initialModelText, currentLang]);
|
||||
|
||||
useImperativeHandle(ref, () => ({
|
||||
getModelText: () => {
|
||||
iframeRef.current?.contentWindow.postMessage({type: "getModelText"}, "*");
|
||||
if (iframeRef.current?.contentWindow) {
|
||||
iframeRef.current.contentWindow.postMessage({
|
||||
type: "getModelText",
|
||||
}, "*");
|
||||
}
|
||||
},
|
||||
updateModelText: (newModelText) => {
|
||||
if (iframeReady) {
|
||||
iframeRef.current?.contentWindow.postMessage({
|
||||
if (iframeReady && iframeRef.current?.contentWindow) {
|
||||
iframeRef.current.contentWindow.postMessage({
|
||||
type: "updateModelText",
|
||||
modelText: newModelText,
|
||||
}, "*");
|
||||
@ -54,7 +62,7 @@ const IframeEditor = forwardRef(({initialModelText, onModelTextChange}, ref) =>
|
||||
return (
|
||||
<iframe
|
||||
ref={iframeRef}
|
||||
src="https://editor.casbin.org/model-editor"
|
||||
src={`https://editor.casbin.org/model-editor?lang=${currentLang}`}
|
||||
frameBorder="0"
|
||||
width="100%"
|
||||
height="500px"
|
||||
|
@ -192,11 +192,15 @@ function ManagementPage(props) {
|
||||
themeAlgorithm={props.themeAlgorithm}
|
||||
onChange={props.setLogoAndThemeAlgorithm} />
|
||||
<LanguageSelect languages={props.account.organization.languages} />
|
||||
<Tooltip title="Click to open AI assitant">
|
||||
<div className="select-box" onClick={props.openAiAssistant}>
|
||||
<DeploymentUnitOutlined style={{fontSize: "24px"}} />
|
||||
</div>
|
||||
</Tooltip>
|
||||
{
|
||||
Conf.AiAssistantUrl?.trim() && (
|
||||
<Tooltip title="Click to open AI assistant">
|
||||
<div className="select-box" onClick={props.openAiAssistant}>
|
||||
<DeploymentUnitOutlined style={{fontSize: "24px"}} />
|
||||
</div>
|
||||
</Tooltip>
|
||||
)
|
||||
}
|
||||
<OpenTour />
|
||||
{Setting.isAdminUser(props.account) && (props.uri.indexOf("/trees") === -1) &&
|
||||
<OrganizationSelect
|
||||
|
@ -932,7 +932,7 @@ class ProviderEditPage extends React.Component {
|
||||
</Col>
|
||||
</Row>
|
||||
) : null}
|
||||
{["AWS S3", "Tencent Cloud COS", "Qiniu Cloud Kodo", "Casdoor"].includes(this.state.provider.type) ? (
|
||||
{["AWS S3", "Tencent Cloud COS", "Qiniu Cloud Kodo", "Casdoor", "CUCloud OSS", "MinIO"].includes(this.state.provider.type) ? (
|
||||
<Row style={{marginTop: "20px"}} >
|
||||
<Col style={{marginTop: "5px"}} span={2}>
|
||||
{["Casdoor"].includes(this.state.provider.type) ?
|
||||
|
@ -233,6 +233,10 @@ export const OtherProviderInfo = {
|
||||
logo: `${StaticBaseUrl}/img/casdoor.png`,
|
||||
url: "https://casdoor.org/docs/provider/storage/overview",
|
||||
},
|
||||
"CUCloud OSS": {
|
||||
logo: `${StaticBaseUrl}/img/social_cucloud.png`,
|
||||
url: "https://www.cucloud.cn/product/oss.html",
|
||||
},
|
||||
},
|
||||
SAML: {
|
||||
"Aliyun IDaaS": {
|
||||
@ -920,7 +924,7 @@ export function getClickable(text) {
|
||||
return (
|
||||
<a onClick={() => {
|
||||
copy(text);
|
||||
showMessage("success", "Copied to clipboard");
|
||||
showMessage("success", i18next.t("general:Copied to clipboard successfully"));
|
||||
}}>
|
||||
{text}
|
||||
</a>
|
||||
@ -1078,6 +1082,7 @@ export function getProviderTypeOptions(category) {
|
||||
{id: "Google Cloud Storage", name: "Google Cloud Storage"},
|
||||
{id: "Synology", name: "Synology"},
|
||||
{id: "Casdoor", name: "Casdoor"},
|
||||
{id: "CUCloud OSS", name: "CUCloud OSS"},
|
||||
]
|
||||
);
|
||||
} else if (category === "SAML") {
|
||||
@ -1171,7 +1176,7 @@ export function renderLogo(application) {
|
||||
|
||||
function isSigninMethodEnabled(application, signinMethod) {
|
||||
if (application && application.signinMethods) {
|
||||
return application.signinMethods.filter(item => item.name === signinMethod && item.rule !== "Hide-Password").length > 0;
|
||||
return application.signinMethods.filter(item => item.name === signinMethod && item.rule !== "Hide password").length > 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@ -1550,25 +1555,25 @@ export function getDefaultHtmlEmailContent() {
|
||||
|
||||
export function getCurrencyText(product) {
|
||||
if (product?.currency === "USD") {
|
||||
return i18next.t("product:USD");
|
||||
return i18next.t("currency:USD");
|
||||
} else if (product?.currency === "CNY") {
|
||||
return i18next.t("product:CNY");
|
||||
return i18next.t("currency:CNY");
|
||||
} else if (product?.currency === "EUR") {
|
||||
return i18next.t("product:EUR");
|
||||
return i18next.t("currency:EUR");
|
||||
} else if (product?.currency === "JPY") {
|
||||
return i18next.t("product:JPY");
|
||||
return i18next.t("currency:JPY");
|
||||
} else if (product?.currency === "GBP") {
|
||||
return i18next.t("product:GBP");
|
||||
return i18next.t("currency:GBP");
|
||||
} else if (product?.currency === "AUD") {
|
||||
return i18next.t("product:AUD");
|
||||
return i18next.t("currency:AUD");
|
||||
} else if (product?.currency === "CAD") {
|
||||
return i18next.t("product:CAD");
|
||||
return i18next.t("currency:CAD");
|
||||
} else if (product?.currency === "CHF") {
|
||||
return i18next.t("product:CHF");
|
||||
return i18next.t("currency:CHF");
|
||||
} else if (product?.currency === "HKD") {
|
||||
return i18next.t("product:HKD");
|
||||
return i18next.t("currency:HKD");
|
||||
} else if (product?.currency === "SGD") {
|
||||
return i18next.t("product:SGD");
|
||||
return i18next.t("currency:SGD");
|
||||
} else {
|
||||
return "(Unknown currency)";
|
||||
}
|
||||
|
@ -1150,7 +1150,7 @@ class LoginPage extends React.Component {
|
||||
]);
|
||||
|
||||
application?.signinMethods?.forEach((signinMethod) => {
|
||||
if (signinMethod.rule === "Hide-Password") {
|
||||
if (signinMethod.rule === "Hide password") {
|
||||
return;
|
||||
}
|
||||
const item = itemsMap.get(generateItemKey(signinMethod.name, signinMethod.rule));
|
||||
|
@ -13,7 +13,6 @@
|
||||
// limitations under the License.
|
||||
|
||||
import CryptoJS from "crypto-js";
|
||||
import i18next from "i18next";
|
||||
import {Buffer} from "buffer";
|
||||
|
||||
export function getRandomKeyForObfuscator(obfuscatorType) {
|
||||
@ -46,17 +45,17 @@ function encrypt(cipher, key, iv, password) {
|
||||
|
||||
export function checkPasswordObfuscator(passwordObfuscatorType, passwordObfuscatorKey) {
|
||||
if (passwordObfuscatorType === undefined) {
|
||||
return i18next.t("organization:failed to get password obfuscator");
|
||||
return "passwordObfuscatorType should not be undefined";
|
||||
} else if (passwordObfuscatorType === "Plain" || passwordObfuscatorType === "") {
|
||||
return "";
|
||||
} else if (passwordObfuscatorType === "AES" || passwordObfuscatorType === "DES") {
|
||||
if (passwordObfuscatorKeyRegexes[passwordObfuscatorType].test(passwordObfuscatorKey)) {
|
||||
return "";
|
||||
} else {
|
||||
return `${i18next.t("organization:The password obfuscator key doesn't match the regex")}: ${passwordObfuscatorKeyRegexes[passwordObfuscatorType].source}`;
|
||||
return `The password obfuscator key doesn't match the regex: ${passwordObfuscatorKeyRegexes[passwordObfuscatorType].source}`;
|
||||
}
|
||||
} else {
|
||||
return `${i18next.t("organization:unsupported password obfuscator type")}: ${passwordObfuscatorType}`;
|
||||
return `unsupported password obfuscator type: ${passwordObfuscatorType}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,6 +141,9 @@ const Dashboard = (props) => {
|
||||
i18next.t("general:Certs"),
|
||||
i18next.t("general:Permissions"),
|
||||
i18next.t("general:Transactions"),
|
||||
i18next.t("general:Models"),
|
||||
i18next.t("general:Adapters"),
|
||||
i18next.t("general:Enforcers"),
|
||||
], top: "10%"},
|
||||
grid: {left: "3%", right: "4%", bottom: "0", top: "25%", containLabel: true},
|
||||
xAxis: {type: "category", boundaryGap: false, data: dateArray},
|
||||
@ -157,6 +160,9 @@ const Dashboard = (props) => {
|
||||
{name: i18next.t("general:Certs"), type: "line", data: dashboardData.certCounts},
|
||||
{name: i18next.t("general:Permissions"), type: "line", data: dashboardData.permissionCounts},
|
||||
{name: i18next.t("general:Transactions"), type: "line", data: dashboardData.transactionCounts},
|
||||
{name: i18next.t("general:Models"), type: "line", data: dashboardData.modelCounts},
|
||||
{name: i18next.t("general:Adapters"), type: "line", data: dashboardData.adapterCounts},
|
||||
{name: i18next.t("general:Enforcers"), type: "line", data: dashboardData.enforcerCounts},
|
||||
],
|
||||
};
|
||||
myChart.setOption(option);
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
import React from "react";
|
||||
import {Alert, Button, QRCode} from "antd";
|
||||
import copy from "copy-to-clipboard";
|
||||
import * as Setting from "../Setting";
|
||||
import i18next from "i18next";
|
||||
|
||||
@ -62,12 +63,8 @@ export const CasdoorAppUrl = ({accessToken}) => {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await navigator.clipboard.writeText(qrUrl);
|
||||
Setting.showMessage("success", i18next.t("general:Copied to clipboard"));
|
||||
} catch (err) {
|
||||
Setting.showMessage("error", i18next.t("general:Failed to copy"));
|
||||
}
|
||||
copy(qrUrl);
|
||||
Setting.showMessage("success", i18next.t("general:Copied to clipboard successfully"));
|
||||
};
|
||||
|
||||
if (error) {
|
||||
@ -82,14 +79,9 @@ export const CasdoorAppUrl = ({accessToken}) => {
|
||||
alignItems: "center",
|
||||
marginBottom: "10px",
|
||||
}}>
|
||||
<span>{i18next.t("general:URL String")}</span>
|
||||
{window.isSecureContext && (
|
||||
<Button
|
||||
size="small"
|
||||
onClick={handleCopyUrl}
|
||||
style={{marginLeft: "10px"}}
|
||||
>
|
||||
{i18next.t("general:Copy URL")}
|
||||
<Button size="small" type="primary" onClick={handleCopyUrl} style={{marginLeft: "10px"}}>
|
||||
{i18next.t("resource:Copy Link")}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Odesílání",
|
||||
"Submit and complete": "Odeslat a dokončit"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Upravit Enforcer",
|
||||
"New Enforcer": "Nový Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Přejít na zapisovatelnou demo stránku?",
|
||||
"Groups": "Skupiny",
|
||||
"Groups - Tooltip": "Skupiny - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Domů",
|
||||
"Home - Tooltip": "Domovská stránka aplikace",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unikátní náhodný řetězec",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identita",
|
||||
"Invitations": "Pozvánky",
|
||||
"Is enabled": "Je povoleno",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Ujistěte se, že heslo je správné",
|
||||
"Password complexity options": "Možnosti složitosti hesla",
|
||||
"Password complexity options - Tooltip": "Různé kombinace možností složitosti hesla",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Heslová sůl",
|
||||
"Password salt - Tooltip": "Náhodný parametr použitý pro šifrování hesla",
|
||||
"Password type": "Typ hesla",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Použít SMS",
|
||||
"Use SMS verification code": "Použít ověřovací kód SMS",
|
||||
"Use a recovery code": "Použít obnovovací kód",
|
||||
"Verification failed": "Ověření selhalo",
|
||||
"Verify Code": "Ověřit kód",
|
||||
"Verify Password": "Ověřit heslo",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Pokročilý editor",
|
||||
"Basic Editor": "Základní editor",
|
||||
"Edit Model": "Upravit model",
|
||||
"Model text": "Text modelu",
|
||||
"Model text - Tooltip": "Casbin model řízení přístupu, včetně vestavěných modelů jako ACL, RBAC, ABAC, RESTful, atd. Můžete také vytvářet vlastní modely. Pro více informací navštivte webové stránky Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Upravit pravidlo",
|
||||
"New Organization": "Nová organizace",
|
||||
"Optional": "Volitelný",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Výzva",
|
||||
"Required": "Povinné",
|
||||
"Soft deletion": "Měkké smazání",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Koupit",
|
||||
"Buy Product": "Koupit produkt",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail produktu",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Testovací stránka nákupu..",
|
||||
"There is no payment channel for this product.": "Pro tento produkt neexistuje žádný platební kanál.",
|
||||
"This product is currently not in sale.": "Tento produkt není momentálně v prodeji.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Upravit HTML pro registraci",
|
||||
"Signup HTML - Tooltip": "Vlastní HTML pro nahrazení výchozího stylu registrační stránky",
|
||||
"Signup group": "Skupina pro registraci",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Tiché",
|
||||
"Site key": "Klíč stránky",
|
||||
"Site key - Tooltip": "Nápověda ke klíči stránky",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Klíče",
|
||||
"Language": "Jazyk",
|
||||
"Language - Tooltip": "Jazyk - Nápověda",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Odkaz",
|
||||
"Location": "Místo",
|
||||
"Location - Tooltip": "Město bydliště",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sendet",
|
||||
"Submit and complete": "Einreichen und abschließen"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Gehe zur beschreibbaren Demo-Website?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Zuhause",
|
||||
"Home - Tooltip": "Homepage der Anwendung",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Einzigartiger Zufallsstring",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Ist aktiviert",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Stellen Sie sicher, dass das Passwort korrekt ist",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Passwort-Salt",
|
||||
"Password salt - Tooltip": "Zufälliger Parameter, der für die Verschlüsselung von Passwörtern verwendet wird",
|
||||
"Password type": "Passworttyp",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Erweiterter Editor",
|
||||
"Basic Editor": "Basis-Editor",
|
||||
"Edit Model": "Modell bearbeiten",
|
||||
"Model text": "Modelltext",
|
||||
"Model text - Tooltip": "Casbin Zugriffskontrollmodell inklusive integrierter Modelle wie ACL, RBAC, ABAC, RESTful, usw. Sie können auch benutzerdefinierte Modelle erstellen. Weitere Informationen finden Sie auf der Casbin-Website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Regel ändern",
|
||||
"New Organization": "Neue Organisation",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Softe Löschung",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Kaufen",
|
||||
"Buy Product": "Produkt kaufen",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail des Produkts",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Testkaufseite.",
|
||||
"There is no payment channel for this product.": "Es gibt keinen Zahlungskanal für dieses Produkt.",
|
||||
"This product is currently not in sale.": "Dieses Produkt steht derzeit nicht zum Verkauf.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Registrierung HTML - Bearbeiten",
|
||||
"Signup HTML - Tooltip": "Benutzerdefiniertes HTML zur Ersetzung des Standard-Registrierungs-Seitenstils",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site-Key",
|
||||
"Site key - Tooltip": "Seitenschlüssel",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Schlüssel",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Ort",
|
||||
"Location - Tooltip": "Stadt des Wohnsitzes",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,16 +761,7 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay",
|
||||
"EUR": "EUR",
|
||||
"JPY": "JPY",
|
||||
"GBP": "GBP",
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"HKD": "HKD",
|
||||
"SGD": "SGD"
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
"Access key": "Access key",
|
||||
@ -901,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1165,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Envío",
|
||||
"Submit and complete": "Enviar y completar"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "¿Ir al sitio demo editable?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Hogar",
|
||||
"Home - Tooltip": "Página de inicio de la aplicación",
|
||||
"ID": "identificación",
|
||||
"ID - Tooltip": "Cadena aleatoria única",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Está habilitado",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Asegúrate de que la contraseña sea correcta",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Sal de contraseña",
|
||||
"Password salt - Tooltip": "Parámetro aleatorio utilizado para la encriptación de contraseñas",
|
||||
"Password type": "Tipo de contraseña",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Editor avanzado",
|
||||
"Basic Editor": "Editor básico",
|
||||
"Edit Model": "Editar modelo",
|
||||
"Model text": "Texto modelo",
|
||||
"Model text - Tooltip": "Modelo de control de acceso Casbin, incluyendo modelos integrados como ACL, RBAC, ABAC, RESTful, etc. También puede crear modelos personalizados. Para obtener más información, visite el sitio web de Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modificar regla",
|
||||
"New Organization": "Nueva organización",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Eliminación suave",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Comprar",
|
||||
"Buy Product": "Comprar producto",
|
||||
"CNY": "Año Nuevo Chino (ANC)",
|
||||
"Detail": "Detalle",
|
||||
"Detail - Tooltip": "Detalle del producto",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Página de compra de prueba.",
|
||||
"There is no payment channel for this product.": "No hay canal de pago para este producto.",
|
||||
"This product is currently not in sale.": "Este producto actualmente no está a la venta.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Registro HTML - Editar",
|
||||
"Signup HTML - Tooltip": "HTML personalizado para reemplazar el estilo predeterminado de la página de registro",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Clave del sitio",
|
||||
"Site key - Tooltip": "Clave del sitio",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Claves",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Enlace",
|
||||
"Location": "Ubicación",
|
||||
"Location - Tooltip": "Ciudad de residencia",
|
||||
|
@ -81,7 +81,7 @@
|
||||
"Only signup": "فقط ثبتنام",
|
||||
"Org choice mode": "حالت انتخاب سازمان",
|
||||
"Org choice mode - Tooltip": "حالت انتخاب سازمان - راهنمای ابزار",
|
||||
"Please enable \"Signin session\" first before enabling \"Auto signin\"": "لطفاً قبل از فعالسازی \"ورود خودکار\"، ابتدا \"جلسه ورود\" را فعال کنید",
|
||||
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"",
|
||||
"Please input your application!": "لطفاً برنامه خود را وارد کنید!",
|
||||
"Please input your organization!": "لطفاً سازمان خود را وارد کنید!",
|
||||
"Please select a HTML file": "لطفاً یک فایل HTML انتخاب کنید",
|
||||
@ -161,6 +161,18 @@
|
||||
"Sending": "در حال ارسال",
|
||||
"Submit and complete": "ارسال و تکمیل"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "ویرایش Enforcer",
|
||||
"New Enforcer": "Enforcer جدید"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "به سایت دمو قابل نوشتن بروید؟",
|
||||
"Groups": "گروهها",
|
||||
"Groups - Tooltip": "گروهها - راهنمای ابزار",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "خانه",
|
||||
"Home - Tooltip": "صفحه اصلی برنامه",
|
||||
"ID": "شناسه",
|
||||
"ID - Tooltip": "رشته تصادفی منحصربهفرد",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "هویت",
|
||||
"Invitations": "دعوتها",
|
||||
"Is enabled": "فعال است",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "مطمئن شوید که رمز عبور صحیح است",
|
||||
"Password complexity options": "گزینههای پیچیدگی رمز عبور",
|
||||
"Password complexity options - Tooltip": "ترکیبات مختلف گزینههای پیچیدگی رمز عبور",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "نمک رمز عبور",
|
||||
"Password salt - Tooltip": "پارامتر تصادفی مورد استفاده برای رمزگذاری رمز عبور",
|
||||
"Password type": "نوع رمز عبور",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "استفاده از پیامک",
|
||||
"Use SMS verification code": "استفاده از کد تأیید پیامک",
|
||||
"Use a recovery code": "استفاده از کد بازیابی",
|
||||
"Verification failed": "تأیید ناموفق بود",
|
||||
"Verify Code": "تأیید کد",
|
||||
"Verify Password": "تأیید رمز عبور",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "شما احراز هویت چندعاملی را فعال کردهاید، لطفاً برای ادامه روی 'ارسال کد' کلیک کنید",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "کلید مخفی"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "ویرایشگر پیشرفته",
|
||||
"Basic Editor": "ویرایشگر ابتدایی",
|
||||
"Edit Model": "ویرایش مدل",
|
||||
"Model text": "متن مدل",
|
||||
"Model text - Tooltip": "مدل کنترل دسترسی Casbin، شامل مدلهای داخلی مانند ACL، RBAC، ABAC، RESTful و غیره. همچنین میتوانید مدلهای سفارشی ایجاد کنید. برای اطلاعات بیشتر، لطفاً به وبسایت Casbin مراجعه کنید",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "قانون اصلاح",
|
||||
"New Organization": "سازمان جدید",
|
||||
"Optional": "اختیاری",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "اعلان",
|
||||
"Required": "الزامی",
|
||||
"Soft deletion": "حذف نرم",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "خرید",
|
||||
"Buy Product": "خرید محصول",
|
||||
"CNY": "یوان چین",
|
||||
"Detail": "جزئیات",
|
||||
"Detail - Tooltip": "جزئیات محصول",
|
||||
"Dummy": "فرضی",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "صفحه تست خرید..",
|
||||
"There is no payment channel for this product.": "برای این محصول کانال پرداختی وجود ندارد.",
|
||||
"This product is currently not in sale.": "این محصول در حال حاضر در فروش نیست.",
|
||||
"USD": "دلار آمریکا",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "ویرایش HTML ثبتنام",
|
||||
"Signup HTML - Tooltip": "HTML سفارشی برای جایگزینی سبک صفحه ثبتنام پیشفرض",
|
||||
"Signup group": "گروه ثبتنام",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "بیصدا",
|
||||
"Site key": "کلید سایت",
|
||||
"Site key - Tooltip": "کلید سایت",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "کلیدها",
|
||||
"Language": "زبان",
|
||||
"Language - Tooltip": "زبان - راهنمای ابزار",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "اتصال",
|
||||
"Location": "مکان",
|
||||
"Location - Tooltip": "شهر محل سکونت",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Envoi en cours",
|
||||
"Submit and complete": "Soumettre et compléter"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Éditer l'exécuteur",
|
||||
"New Enforcer": "Ajouter un exécuteur"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Allez sur le site de démonstration modifiable ?",
|
||||
"Groups": "Groupes",
|
||||
"Groups - Tooltip": "Groupes - infobulle",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Accueil",
|
||||
"Home - Tooltip": "Page d'accueil de l'application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Chaîne unique aléatoire",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identité",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Est activé",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Assurez-vous que le mot de passe soit correct",
|
||||
"Password complexity options": "Options de complexité du mot de passe",
|
||||
"Password complexity options - Tooltip": "Différentes combinaisons d'options de complexité de mot de passe",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Sel de mot de passe",
|
||||
"Password salt - Tooltip": "Paramètre aléatoire utilisé pour le chiffrement des mots de passe",
|
||||
"Password type": "Type de mot de passe",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Utiliser les SMS",
|
||||
"Use SMS verification code": "Utiliser la vérification par code SMS",
|
||||
"Use a recovery code": "Utiliser un code de récupération",
|
||||
"Verification failed": "Échec de la vérification",
|
||||
"Verify Code": "Vérifier le code",
|
||||
"Verify Password": "Confirmez le mot de passe",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Éditeur avancé",
|
||||
"Basic Editor": "Éditeur de base",
|
||||
"Edit Model": "Modifier le modèle",
|
||||
"Model text": "Définition du modèle",
|
||||
"Model text - Tooltip": "Modèle de contrôle d'accès Casbin, comprenant des modèles intégrés tels que ACL, RBAC, ABAC, RESTful, etc. Vous pouvez également créer des modèles personnalisés. Pour plus d'informations, veuillez visiter le site web de Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Règle de modification",
|
||||
"New Organization": "Nouvelle organisation",
|
||||
"Optional": "Optionnel",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Requis",
|
||||
"Soft deletion": "Suppression douce",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Acheter",
|
||||
"Buy Product": "Acheter un produit",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Détail",
|
||||
"Detail - Tooltip": "Détail du produit",
|
||||
"Dummy": "Exemple",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Page d'achat de test.",
|
||||
"There is no payment channel for this product.": "Il n'y a aucun canal de paiement pour ce produit.",
|
||||
"This product is currently not in sale.": "Ce produit n'est actuellement pas en vente.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "HTML de la page d'inscription - Modifier",
|
||||
"Signup HTML - Tooltip": "HTML personnalisé pour remplacer le style par défaut de la page d'inscription",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silencieux",
|
||||
"Site key": "Clé de site",
|
||||
"Site key - Tooltip": "Clé de site",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Clés",
|
||||
"Language": "Langue",
|
||||
"Language - Tooltip": "Langue - Infobulle",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Lier",
|
||||
"Location": "Localisation",
|
||||
"Location - Tooltip": "Ville de résidence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Mengirimkan",
|
||||
"Submit and complete": "Kirim dan selesaikan"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Pergi ke situs demo yang dapat ditulis?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Rumah",
|
||||
"Home - Tooltip": "Halaman utama aplikasi",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Karakter acak unik",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Diaktifkan",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Pastikan kata sandi yang benar",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Garam sandi",
|
||||
"Password salt - Tooltip": "Parameter acak yang digunakan untuk enkripsi kata sandi",
|
||||
"Password type": "Jenis kata sandi",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Editor lanjutan",
|
||||
"Basic Editor": "Editor dasar",
|
||||
"Edit Model": "Mengedit Model",
|
||||
"Model text": "Teks Model",
|
||||
"Model text - Tooltip": "Model kontrol akses Casbin, termasuk model bawaan seperti ACL, RBAC, ABAC, RESTful, dll. Anda juga dapat membuat model kustom. Untuk informasi lebih lanjut, silakan kunjungi situs web Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Mengubah aturan",
|
||||
"New Organization": "Organisasi baru",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Penghapusan lunak",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Beli",
|
||||
"Buy Product": "Beli Produk",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Rincian",
|
||||
"Detail - Tooltip": "Detail produk",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Halaman pembelian uji coba.",
|
||||
"There is no payment channel for this product.": "Tidak ada saluran pembayaran untuk produk ini.",
|
||||
"This product is currently not in sale.": "Produk ini saat ini tidak dijual.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Pendaftaran HTML - Sunting",
|
||||
"Signup HTML - Tooltip": "HTML khusus untuk mengganti gaya halaman pendaftaran bawaan",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Kunci situs",
|
||||
"Site key - Tooltip": "Kunci situs atau kunci halaman web",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Kunci",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Tautan",
|
||||
"Location": "Lokasi",
|
||||
"Location - Tooltip": "Kota tempat tinggal",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "送信",
|
||||
"Submit and complete": "提出して完了してください"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "書き込み可能なデモサイトに移動しますか?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "ホーム",
|
||||
"Home - Tooltip": "アプリケーションのホームページ",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "ユニークなランダム文字列",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "可能になっています",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "パスワードが正しいことを確認してください",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "パスワードのソルト",
|
||||
"Password salt - Tooltip": "ランダムパラメーターは、パスワードの暗号化に使用されます",
|
||||
"Password type": "パスワードタイプ",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "編集モデル",
|
||||
"Model text": "モデルテキスト",
|
||||
"Model text - Tooltip": "Casbinのアクセス制御モデルには、ACL、RBAC、ABAC、RESTfulなどの組み込みモデルが含まれています。カスタムモデルも作成できます。詳細については、Casbinのウェブサイトをご覧ください",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "ルールを変更する",
|
||||
"New Organization": "新しい組織",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "ソフト削除",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "購入",
|
||||
"Buy Product": "製品を購入する",
|
||||
"CNY": "CNY",
|
||||
"Detail": "詳細",
|
||||
"Detail - Tooltip": "製品の詳細",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "テスト購入ページ。",
|
||||
"There is no payment channel for this product.": "この製品には支払いチャネルがありません。",
|
||||
"This product is currently not in sale.": "この製品は現在販売されていません。",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "サインアップ HTML - 編集",
|
||||
"Signup HTML - Tooltip": "デフォルトのサインアップページスタイルを置き換えるためのカスタムHTML",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "サイトキー",
|
||||
"Site key - Tooltip": "サイトキー",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "鍵",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "リンク",
|
||||
"Location": "場所",
|
||||
"Location - Tooltip": "居住都市",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "전송하기",
|
||||
"Submit and complete": "제출하고 완료하십시오"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "쓰기 가능한 데모 사이트로 이동하시겠습니까?",
|
||||
"Groups": "그룹",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "집",
|
||||
"Home - Tooltip": "어플리케이션 홈 페이지",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "유일한 랜덤 문자열",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "활성화됩니다",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "비밀번호가 올바른지 확인하세요",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "비밀번호 솔트",
|
||||
"Password salt - Tooltip": "암호화에 사용되는 임의 매개변수",
|
||||
"Password type": "암호 유형",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "고급 편집기",
|
||||
"Basic Editor": "기본 편집기",
|
||||
"Edit Model": "편집 형태 모델",
|
||||
"Model text": "모델 텍스트",
|
||||
"Model text - Tooltip": "Casbin 액세스 제어 모델은 ACL, RBAC, ABAC, RESTful 등의 내장된 모델을 포함하며 사용자 정의 모델도 만들 수 있습니다. 자세한 정보는 Casbin 웹 사이트를 방문하십시오",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "규칙 수정",
|
||||
"New Organization": "새로운 조직",
|
||||
"Optional": "선택사항",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "소프트 삭제",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "구매하다",
|
||||
"Buy Product": "제품을 구입하세요",
|
||||
"CNY": "CNY",
|
||||
"Detail": "세부사항",
|
||||
"Detail - Tooltip": "제품의 세부사항",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "시험 구매 페이지.",
|
||||
"There is no payment channel for this product.": "이 제품에 대한 결제 채널이 없습니다.",
|
||||
"This product is currently not in sale.": "이 제품은 현재 판매되지 않고 있습니다.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "가입 HTML - 수정",
|
||||
"Signup HTML - Tooltip": "기본 가입 페이지 스타일을 바꾸기 위한 사용자 지정 HTML",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "사이트 키",
|
||||
"Site key - Tooltip": "사이트 키",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "열쇠",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "링크",
|
||||
"Location": "장소",
|
||||
"Location - Tooltip": "거주 도시",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Enviando",
|
||||
"Submit and complete": "Enviar e concluir"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Editar Executor",
|
||||
"New Enforcer": "Novo Executor"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Acessar o site de demonstração gravável?",
|
||||
"Groups": "Grupos",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Página Inicial",
|
||||
"Home - Tooltip": "Página inicial do aplicativo",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "String única aleatória",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identidade",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Está habilitado",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Certifique-se de que a senha está correta",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Salt de senha",
|
||||
"Password salt - Tooltip": "Parâmetro aleatório usado para criptografia de senha",
|
||||
"Password type": "Tipo de senha",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Editor Avançado",
|
||||
"Basic Editor": "Editor Básico",
|
||||
"Edit Model": "Editar Modelo",
|
||||
"Model text": "Texto do Modelo",
|
||||
"Model text - Tooltip": "Modelo de controle de acesso Casbin, incluindo modelos incorporados como ACL, RBAC, ABAC, RESTful, etc. Você também pode criar modelos personalizados. Para obter mais informações, visite o site do Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modificar regra",
|
||||
"New Organization": "Nova Organização",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Exclusão suave",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Comprar",
|
||||
"Buy Product": "Comprar Produto",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detalhe",
|
||||
"Detail - Tooltip": "Detalhes do produto",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Página de teste de compra...",
|
||||
"There is no payment channel for this product.": "Não há canal de pagamento disponível para este produto.",
|
||||
"This product is currently not in sale.": "Este produto não está disponível para venda no momento.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Editar HTML de inscrição",
|
||||
"Signup HTML - Tooltip": "HTML personalizado para substituir o estilo padrão da página de inscrição",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silencioso",
|
||||
"Site key": "Chave do site",
|
||||
"Site key - Tooltip": "Chave do site",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Chaves",
|
||||
"Language": "Idioma",
|
||||
"Language - Tooltip": "Idioma - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Localização",
|
||||
"Location - Tooltip": "Cidade de residência",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Отправка",
|
||||
"Submit and complete": "Отправить и завершить"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Редактировать контролёра доступа",
|
||||
"New Enforcer": "Новый контролёр доступа"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Перейти на демонстрационный сайт для записи данных?",
|
||||
"Groups": "Группы",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Дом",
|
||||
"Home - Tooltip": "Главная страница приложения",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Уникальная случайная строка",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Включен",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Убедитесь, что пароль правильный",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Соль пароля",
|
||||
"Password salt - Tooltip": "Случайный параметр, используемый для шифрования пароля",
|
||||
"Password type": "Тип пароля",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Использовать SMS",
|
||||
"Use SMS verification code": "Использовать SMS код для проверки",
|
||||
"Use a recovery code": "Использовать код восстановления",
|
||||
"Verification failed": "Проверка не удалась",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Расширенный редактор",
|
||||
"Basic Editor": "Базовый редактор",
|
||||
"Edit Model": "Редактировать модель",
|
||||
"Model text": "Модельный текст",
|
||||
"Model text - Tooltip": "Модель контроля доступа Casbin, включая встроенные модели, такие как ACL, RBAC, ABAC, RESTful и т. д. Вы также можете создавать свои собственные модели. Для получения дополнительной информации, пожалуйста, посетите веб-сайт Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Изменить правило",
|
||||
"New Organization": "Новая организация",
|
||||
"Optional": "Опционально",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Мягкое удаление",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Купить",
|
||||
"Buy Product": "Купить продукт",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Деталь",
|
||||
"Detail - Tooltip": "Деталь продукта",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Страница для тестовой покупки.",
|
||||
"There is no payment channel for this product.": "Для этого продукта нет канала оплаты.",
|
||||
"This product is currently not in sale.": "Этот продукт в настоящее время не продается.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Регистрационная форма HTML - Редактировать",
|
||||
"Signup HTML - Tooltip": "Пользовательский HTML для замены стиля стандартной страницы регистрации",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Ключ сайта",
|
||||
"Site key - Tooltip": "Ключ сайта",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Ключи",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Ссылка",
|
||||
"Location": "Местоположение",
|
||||
"Location - Tooltip": "Город проживания",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Odosielanie",
|
||||
"Submit and complete": "Odoslať a dokončiť"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Upraviť vynútiteľa",
|
||||
"New Enforcer": "Nový vynútiteľ"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Prejsť na zapisovateľnú demo stránku?",
|
||||
"Groups": "Skupiny",
|
||||
"Groups - Tooltip": "Skupiny",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Domov",
|
||||
"Home - Tooltip": "Domovská stránka aplikácie",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Jedinečný náhodný reťazec",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identita",
|
||||
"Invitations": "Pozvánky",
|
||||
"Is enabled": "Je povolené",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Uistite sa, že heslo je správne",
|
||||
"Password complexity options": "Možnosti zložitosti hesla",
|
||||
"Password complexity options - Tooltip": "Rôzne kombinácie možností zložitosti hesla",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Soľ hesla",
|
||||
"Password salt - Tooltip": "Náhodný parameter používaný na šifrovanie hesla",
|
||||
"Password type": "Typ hesla",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Použiť SMS",
|
||||
"Use SMS verification code": "Použiť overovací kód SMS",
|
||||
"Use a recovery code": "Použiť obnovovací kód",
|
||||
"Verification failed": "Overenie zlyhalo",
|
||||
"Verify Code": "Overiť kód",
|
||||
"Verify Password": "Overiť heslo",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Rozšírený editor",
|
||||
"Basic Editor": "Základný editor",
|
||||
"Edit Model": "Upraviť model",
|
||||
"Model text": "Text modelu",
|
||||
"Model text - Tooltip": "Model prístupu Casbin, vrátane vstavaných modelov ako ACL, RBAC, ABAC, RESTful, atď. Môžete tiež vytvoriť vlastné modely. Pre viac informácií navštívte web Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Upraviť pravidlo",
|
||||
"New Organization": "Nová organizácia",
|
||||
"Optional": "Voliteľné",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Výzva",
|
||||
"Required": "Povinné",
|
||||
"Soft deletion": "Mäkké vymazanie",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Kúpiť",
|
||||
"Buy Product": "Kúpiť produkt",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail produktu",
|
||||
"Dummy": "Vzorkový",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Testovať stránku nákupu..",
|
||||
"There is no payment channel for this product.": "Pre tento produkt neexistuje platobný kanál.",
|
||||
"This product is currently not in sale.": "Tento produkt momentálne nie je v predaji.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Upraviť HTML registrácie",
|
||||
"Signup HTML - Tooltip": "Vlastné HTML na nahradenie predvoleného štýlu registračnej stránky",
|
||||
"Signup group": "Skupina registrácie",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Tichý",
|
||||
"Site key": "Kľúč stránky",
|
||||
"Site key - Tooltip": "Kľúč stránky",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Kľúče",
|
||||
"Language": "Jazyk",
|
||||
"Language - Tooltip": "Jazyk - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Odkaz",
|
||||
"Location": "Miesto",
|
||||
"Location - Tooltip": "Mesto bydliska",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Sending",
|
||||
"Submit and complete": "Submit and complete"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Home",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Is enabled",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Make sure the password is correct",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Edit Model",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Gönderiliyor",
|
||||
"Submit and complete": "Gönder ve Tamamla"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Go to writable demo site?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Ana sayfa",
|
||||
"Home - Tooltip": "Home page of the application",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Unique random string",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Davetler",
|
||||
"Is enabled": "Aktif Mi?",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Şifrenizin doğru olduğundan emin olun",
|
||||
"Password complexity options": "Şifre karmaşıklık seçenekleri",
|
||||
"Password complexity options - Tooltip": "Different combinations of password complexity options",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Password salt",
|
||||
"Password salt - Tooltip": "Random parameter used for password encryption",
|
||||
"Password type": "Password type",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "SMS kullan",
|
||||
"Use SMS verification code": "SMS doğrulama kodunu kullan",
|
||||
"Use a recovery code": "Kurtarma kodu kullan",
|
||||
"Verification failed": "Doğrulama başarısız",
|
||||
"Verify Code": "Kodu doğrula",
|
||||
"Verify Password": "Parolayı Doğrula",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Advanced Editor",
|
||||
"Basic Editor": "Basic Editor",
|
||||
"Edit Model": "Modeli Düzenle",
|
||||
"Model text": "Model text",
|
||||
"Model text - Tooltip": "Casbin access control model, including built-in models like ACL, RBAC, ABAC, RESTful, etc. You can also create custom models. For more information, please visit the Casbin website",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Modify rule",
|
||||
"New Organization": "New Organization",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Gerekli",
|
||||
"Soft deletion": "Soft deletion",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Buy",
|
||||
"Buy Product": "Buy Product",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Detail",
|
||||
"Detail - Tooltip": "Detail of product",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Test buy page..",
|
||||
"There is no payment channel for this product.": "There is no payment channel for this product.",
|
||||
"This product is currently not in sale.": "This product is currently not in sale.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Signup HTML - Edit",
|
||||
"Signup HTML - Tooltip": "Custom HTML for replacing the default signup page style",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Silent",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "Site key",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Keys",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Link",
|
||||
"Location": "Location",
|
||||
"Location - Tooltip": "City of residence",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Відправка",
|
||||
"Submit and complete": "Надішліть і заповніть"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Редагувати Enforcer",
|
||||
"New Enforcer": "Новий Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Перейти на демонстраційний сайт для запису?",
|
||||
"Groups": "Групи",
|
||||
"Groups - Tooltip": "Групи – підказка",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "додому",
|
||||
"Home - Tooltip": "Домашня сторінка програми",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Унікальний випадковий рядок",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Ідентичність",
|
||||
"Invitations": "Запрошення",
|
||||
"Is enabled": "Увімкнено",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Переконайтеся, що пароль правильний",
|
||||
"Password complexity options": "Параметри складності пароля",
|
||||
"Password complexity options - Tooltip": "Різні комбінації параметрів складності пароля",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Сіль пароля",
|
||||
"Password salt - Tooltip": "Випадковий параметр, який використовується для шифрування пароля",
|
||||
"Password type": "Тип пароля",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Використовуйте SMS",
|
||||
"Use SMS verification code": "Використовуйте код підтвердження SMS",
|
||||
"Use a recovery code": "Використовуйте код відновлення",
|
||||
"Verification failed": "Не вдалося перевірити",
|
||||
"Verify Code": "Підтвердити код",
|
||||
"Verify Password": "Підтвердіть пароль",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Розширений редактор",
|
||||
"Basic Editor": "Базовий редактор",
|
||||
"Edit Model": "Редагувати модель",
|
||||
"Model text": "Текст моделі",
|
||||
"Model text - Tooltip": "Модель контролю доступу Casbin, включаючи такі вбудовані моделі, як ACL, RBAC, ABAC, RESTful тощо. Ви також можете створювати власні моделі. ",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Змінити правило",
|
||||
"New Organization": "Нова організація",
|
||||
"Optional": "Додатково",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Підкажіть",
|
||||
"Required": "вимагається",
|
||||
"Soft deletion": "М'яке видалення",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "купити",
|
||||
"Buy Product": "Купити товар",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Деталь",
|
||||
"Detail - Tooltip": "Деталь продукту",
|
||||
"Dummy": "манекен",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Сторінка тестової покупки..",
|
||||
"There is no payment channel for this product.": "Для цього продукту немає платіжного каналу.",
|
||||
"This product is currently not in sale.": "Цей товар наразі відсутній у продажу.",
|
||||
"USD": "доларів США",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Реєстраційний HTML - Редагувати",
|
||||
"Signup HTML - Tooltip": "Спеціальний HTML для заміни стилю сторінки реєстрації за умовчанням",
|
||||
"Signup group": "Група реєстрації",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Мовчазний",
|
||||
"Site key": "Ключ сайту",
|
||||
"Site key - Tooltip": "Ключ сайту",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Ключі",
|
||||
"Language": "Мова",
|
||||
"Language - Tooltip": "Мова – підказка",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Посилання",
|
||||
"Location": "Місцезнаходження",
|
||||
"Location - Tooltip": "Місто проживання",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "Gửi",
|
||||
"Submit and complete": "Nộp và hoàn thành"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "Edit Enforcer",
|
||||
"New Enforcer": "New Enforcer"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "Bạn có muốn đi đến trang demo có thể viết được không?",
|
||||
"Groups": "Groups",
|
||||
"Groups - Tooltip": "Groups - Tooltip",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "Nhà",
|
||||
"Home - Tooltip": "Trang chủ của ứng dụng",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "Chuỗi ngẫu nhiên độc nhất",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "Identity",
|
||||
"Invitations": "Invitations",
|
||||
"Is enabled": "Đã được kích hoạt",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "Hãy đảm bảo rằng mật khẩu là chính xác",
|
||||
"Password complexity options": "Password complexity options",
|
||||
"Password complexity options - Tooltip": "Password complexity options - Tooltip",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "Muối mật khẩu",
|
||||
"Password salt - Tooltip": "Tham số ngẫu nhiên được sử dụng để mã hóa mật khẩu",
|
||||
"Password type": "Loại mật khẩu",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "Use SMS",
|
||||
"Use SMS verification code": "Use SMS verification code",
|
||||
"Use a recovery code": "Use a recovery code",
|
||||
"Verification failed": "Verification failed",
|
||||
"Verify Code": "Verify Code",
|
||||
"Verify Password": "Verify Password",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "Secret Key"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "Editor nâng cao",
|
||||
"Basic Editor": "Editor cơ bản",
|
||||
"Edit Model": "Sửa mô hình",
|
||||
"Model text": "Văn bản mẫu",
|
||||
"Model text - Tooltip": "Mô hình kiểm soát truy cập Casbin, bao gồm các mô hình tích hợp như ACL, RBAC, ABAC, RESTful, v.v. Bạn cũng có thể tạo các mô hình tùy chỉnh. Để biết thêm thông tin, vui lòng truy cập trang web Casbin",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "Sửa đổi quy tắc",
|
||||
"New Organization": "Tổ chức mới",
|
||||
"Optional": "Optional",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "Prompt",
|
||||
"Required": "Required",
|
||||
"Soft deletion": "Xóa mềm",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "Alipay",
|
||||
"Buy": "Mua",
|
||||
"Buy Product": "Mua sản phẩm",
|
||||
"CNY": "CNY",
|
||||
"Detail": "Chi tiết",
|
||||
"Detail - Tooltip": "Chi tiết sản phẩm",
|
||||
"Dummy": "Dummy",
|
||||
@ -740,7 +761,6 @@
|
||||
"Test buy page..": "Trang mua thử.",
|
||||
"There is no payment channel for this product.": "Không có kênh thanh toán cho sản phẩm này.",
|
||||
"This product is currently not in sale.": "Sản phẩm này hiện không được bán.",
|
||||
"USD": "USD",
|
||||
"WeChat Pay": "WeChat Pay"
|
||||
},
|
||||
"provider": {
|
||||
@ -893,6 +913,7 @@
|
||||
"Signup HTML - Edit": "Đăng ký HTML - Chỉnh sửa",
|
||||
"Signup HTML - Tooltip": "Trang HTML tùy chỉnh để thay thế phong cách trang đăng ký mặc định",
|
||||
"Signup group": "Signup group",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "Im lặng",
|
||||
"Site key": "Khóa trang web",
|
||||
"Site key - Tooltip": "Khóa trang web",
|
||||
@ -1157,6 +1178,7 @@
|
||||
"Keys": "Chìa khóa",
|
||||
"Language": "Language",
|
||||
"Language - Tooltip": "Language - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "Liên kết",
|
||||
"Location": "Vị trí",
|
||||
"Location - Tooltip": "Thành phố cư trú",
|
||||
|
@ -161,6 +161,18 @@
|
||||
"Sending": "发送中",
|
||||
"Submit and complete": "完成提交"
|
||||
},
|
||||
"currency": {
|
||||
"AUD": "AUD",
|
||||
"CAD": "CAD",
|
||||
"CHF": "CHF",
|
||||
"CNY": "CNY",
|
||||
"EUR": "EUR",
|
||||
"GBP": "GBP",
|
||||
"HKD": "HKD",
|
||||
"JPY": "JPY",
|
||||
"SGD": "SGD",
|
||||
"USD": "USD"
|
||||
},
|
||||
"enforcer": {
|
||||
"Edit Enforcer": "编辑Casbin执行器",
|
||||
"New Enforcer": "新建Casbin执行器"
|
||||
@ -266,10 +278,13 @@
|
||||
"Go to writable demo site?": "跳转至可写演示站点?",
|
||||
"Groups": "群组",
|
||||
"Groups - Tooltip": "组",
|
||||
"Hide password": "Hide password",
|
||||
"Home": "首页",
|
||||
"Home - Tooltip": "应用的首页",
|
||||
"ID": "ID",
|
||||
"ID - Tooltip": "唯一的随机字符串",
|
||||
"IP whitelist": "IP whitelist",
|
||||
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
|
||||
"Identity": "身份认证",
|
||||
"Invitations": "邀请码",
|
||||
"Is enabled": "已启用",
|
||||
@ -312,6 +327,10 @@
|
||||
"Password - Tooltip": "请确认密码正确",
|
||||
"Password complexity options": "密码复杂度选项",
|
||||
"Password complexity options - Tooltip": "密码复杂度组合,登录密码复杂度必须符合该规范",
|
||||
"Password obf key": "Password obf key",
|
||||
"Password obf key - Tooltip": "Password obf key - Tooltip",
|
||||
"Password obfuscator": "Password obfuscator",
|
||||
"Password obfuscator - Tooltip": "Password obfuscator - Tooltip",
|
||||
"Password salt": "密码Salt值",
|
||||
"Password salt - Tooltip": "用于密码加密的随机参数",
|
||||
"Password type": "密码类型",
|
||||
@ -559,7 +578,6 @@
|
||||
"Use SMS": "使用短信",
|
||||
"Use SMS verification code": "使用手机或电子邮件发送验证码认证",
|
||||
"Use a recovery code": "使用恢复代码",
|
||||
"Verification failed": "验证失败",
|
||||
"Verify Code": "验证码",
|
||||
"Verify Password": "验证密码",
|
||||
"You have enabled Multi-Factor Authentication, Please click 'Send Code' to continue": "您已经启用多因素认证, 请点击 '发送验证码' 继续",
|
||||
@ -574,6 +592,8 @@
|
||||
"Secret Key": "密钥"
|
||||
},
|
||||
"model": {
|
||||
"Advanced Editor": "高级编辑器",
|
||||
"Basic Editor": "基础编辑器",
|
||||
"Edit Model": "编辑模型",
|
||||
"Model text": "模型文本",
|
||||
"Model text - Tooltip": "Casbin访问控制模型,支持ACL、RBAC、ABAC、RESTful等内置模型,也可以自定义模型,具体请查看Casbin官网",
|
||||
@ -592,6 +612,8 @@
|
||||
"Modify rule": "修改规则",
|
||||
"New Organization": "添加组织",
|
||||
"Optional": "可选",
|
||||
"Password expire days": "Password expire days",
|
||||
"Password expire days - Tooltip": "Password expire days - Tooltip",
|
||||
"Prompt": "提示",
|
||||
"Required": "必须",
|
||||
"Soft deletion": "软删除",
|
||||
@ -709,7 +731,6 @@
|
||||
"Alipay": "支付宝",
|
||||
"Buy": "购买",
|
||||
"Buy Product": "购买商品",
|
||||
"CNY": "人民币",
|
||||
"Detail": "详情",
|
||||
"Detail - Tooltip": "商品详情",
|
||||
"Dummy": "虚拟",
|
||||
@ -740,16 +761,7 @@
|
||||
"Test buy page..": "测试购买页面..",
|
||||
"There is no payment channel for this product.": "该商品没有付款方式。",
|
||||
"This product is currently not in sale.": "该商品目前未在售。",
|
||||
"USD": "美元",
|
||||
"WeChat Pay": "微信支付",
|
||||
"EUR": "欧元",
|
||||
"JPY": "日元",
|
||||
"GBP": "英镑",
|
||||
"AUD": "澳元",
|
||||
"CAD": "加元",
|
||||
"CHF": "瑞士法郎",
|
||||
"HKD": "港币",
|
||||
"SGD": "新加坡元"
|
||||
"WeChat Pay": "微信支付"
|
||||
},
|
||||
"provider": {
|
||||
"Access key": "访问密钥",
|
||||
@ -901,6 +913,7 @@
|
||||
"Signup HTML - Edit": "注册页面HTML - 编辑",
|
||||
"Signup HTML - Tooltip": "自定义HTML,用于替换默认的注册页面样式",
|
||||
"Signup group": "注册后的群组",
|
||||
"Signup group - Tooltip": "Signup group - Tooltip",
|
||||
"Silent": "静默",
|
||||
"Site key": "Site key",
|
||||
"Site key - Tooltip": "站点密钥",
|
||||
@ -1165,6 +1178,7 @@
|
||||
"Keys": "键",
|
||||
"Language": "语言",
|
||||
"Language - Tooltip": "语言 - Tooltip",
|
||||
"Last change password time": "Last change password time",
|
||||
"Link": "绑定",
|
||||
"Location": "城市",
|
||||
"Location - Tooltip": "居住地址所在的城市",
|
||||
|
@ -105,6 +105,18 @@ class MfaAccountTable extends React.Component {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: i18next.t("mfaAccount:Origin"),
|
||||
dataIndex: "origin",
|
||||
key: "origin",
|
||||
render: (text, record, index) => {
|
||||
return (
|
||||
<Input value={text} onChange={e => {
|
||||
this.updateField(table, index, "origin", e.target.value);
|
||||
}} />
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: i18next.t("mfaAccount:Secret Key"),
|
||||
dataIndex: "secretKey",
|
||||
@ -176,7 +188,7 @@ class MfaAccountTable extends React.Component {
|
||||
content={<CasdoorAppUrl accessToken={this.props.accessToken} />}
|
||||
>
|
||||
<Button type="primary" size="small">
|
||||
{i18next.t("general:Show URL")}
|
||||
{i18next.t("general:URL")}
|
||||
</Button>
|
||||
</Popover>
|
||||
</div>
|
||||
|
@ -136,7 +136,7 @@ class SigninMethodTable extends React.Component {
|
||||
options = [
|
||||
{id: "All", name: i18next.t("general:All")},
|
||||
{id: "Non-LDAP", name: i18next.t("general:Non-LDAP")},
|
||||
{id: "Hide-Password", name: i18next.t("general:Hide-Password")},
|
||||
{id: "Hide password", name: i18next.t("general:Hide password")},
|
||||
];
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user