Merge branch 'hotfix/v2.6.1' into develop

# Conflicts:
#	packages/client/src/components/panels/InvitePanel/StyledInvitePanel.js
#	packages/client/src/pages/PortalSettings/categories/integration/LDAP/styled-components/StyledLdapPage.js
#	packages/client/src/pages/Wizard/index.js
This commit is contained in:
Alexey Safronov 2024-09-02 19:28:07 +04:00
commit c51fb3fe8f
57 changed files with 1641 additions and 818 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "ستسمح المزامنة بتحميل جميع البيانات من البوابة وتحديث البيانات الجديدة بعد تغيير الإعدادات. قم بالمزامنة في كل مرة يكون لديك بيانات جديدة عن المستخدمين في البوابة.",
"LdapAvatar": "صورة الملف الشخصي",
"LdapCertificateConfirm": "تأكيد الشهادة",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "يمكنك جعل حركة مرور LDAP سرية وآمنة باستخدام طبقة المقابس الآمنة (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "يوفر StartTLS طريقة لترقية اتصال النص العادي إلى اتصال مشفر (TLS أو SSL) بدلاً من استخدام بوابة منفصل للاتصال المشفر.",
"LdapDisclaimer": "لطفًا، يرجى الانتباه: سيتم أخذ البريد الإلكتروني لمستخدم البوابة من إعداد \"ميزة البريد\". إذا كان مفقودًا، فسيتم تشكيله بالطريقة التالية: \"خاصية تسجيل الدخول + @ + مجال LDAP\". وفي حالة عدم وجود مثل هذا البريد الإلكتروني، فلن يتلقى المستخدم أي إشعار للبوابة.",
"LdapEnableSSL": "تفعيل SSL",
"LdapEnableSSLTooltip": "يمكنك جعل حركة مرور LDAP سرية وآمنة باستخدام طبقة المقابس الآمنة (SSL)",
"LdapEnableStartTls": "تفعيل StartTLS",
"LdapEnableStartTlsTooltip": "يوفر StartTLS طريقة لترقية اتصال النص العادي إلى اتصال مشفر (TLS أو SSL) بدلاً من استخدام بوابة منفصل للاتصال المشفر.",
"LdapGroupAttribute": "Group Attribute",
"LdapGroupAttributeTooltip": "أدخل ميزة هدف المجموعة التي تحدد المستخدمين الذين تتضمنهم هذه المجموعة.",
"LdapGroupDN": "الاسم التعريفي للمجموعة",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Sinxronizasiya bütün məlumatların portaldan yüklənməsinə və parametrlər dəyişdirildikdən sonra yeni məlumatların yenilənməsinə imkan verəcək. Portalda istifadəçilər üçün hər dəfə yeni məlumatınız olduqda sinxronizasiya edin.",
"LdapAvatar": "Profil şəkli",
"LdapCertificateConfirm": "Sertifikatı təsdiqləyin",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Secure Sockets Layer (SSL) istifadə edərək LDAP trafikini şəxsi və təhlükəsiz edə bilərsiniz.",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS, şifrələnmiş əlaqə üçün ayrıca portdan istifadə etmək əvəzinə, açıq mətn bağlantısını şifrələnmiş (TLS və ya SSL) əlaqəyə yüksəltmək üçün bir yol təqdim edir.",
"LdapDisclaimer": "Nəzərə alın: Portal istifadəçisi e-poçtu 'Mail Atribut' parametrindən alınacaq. Əgər çatışmazsa, o, aşağıdakı kimi yaradılacaq: 'Login Atribut + @ + LDAP Domain'. Əgər belə bir e-poçt yoxdursa, istifadəçiyə heç bir portal bildirişi göndərilməyəcək.",
"LdapEnableSSL": "SSL-i aktivləşdirin",
"LdapEnableSSLTooltip": "Secure Sockets Layer (SSL) istifadə edərək LDAP trafikini şəxsi və təhlükəsiz edə bilərsiniz.",
"LdapEnableStartTls": "StartTLS-i aktivləşdirin",
"LdapEnableStartTlsTooltip": "StartTLS, şifrələnmiş əlaqə üçün ayrıca portdan istifadə etmək əvəzinə, açıq mətn bağlantısını şifrələnmiş (TLS və ya SSL) əlaqəyə yüksəltmək üçün bir yol təqdim edir.",
"LdapGroupAttribute": "Qrup Xüsusiyyəti",
"LdapGroupAttributeTooltip": "Bu qrupun hansı istifadəçiləri ehtiva etdiyini göstərən qrup obyekti xüsusiyyətini daxil edin.",
"LdapGroupDN": "DN qrupu",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Синхронизирането ще позволи качване на всички данни от портала и актуализиране на новите данни след промяна на настройките. Синхронизирайте всеки път, когато имате нови данни за потребители в портала.",
"LdapAvatar": "Профилна снимка",
"LdapCertificateConfirm": "Потвърди сертификат",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Можете да направите LDAP трафика поверителен и защитен, като използвате Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS предлага начин за надграждане на връзка с обикновен текст до криптирана (TLS или SSL) връзка, вместо да използвате отделен порт за криптирана комуникация.",
"LdapDisclaimer": "Молим да имате предвид: потребителският имейл на портала ще бъде взет от настройката „Пощенски атрибут“. Ако липсва, ще се формира по следния начин: „Входен атрибут + @ + LDAP Домейн“ В случай, че такъв имейл не съществува, потребителят няма да получи никакво портално известие.",
"LdapEnableSSL": "Активирай SSL",
"LdapEnableSSLTooltip": "Можете да направите LDAP трафика поверителен и защитен, като използвате Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Активирай StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS предлага начин за надграждане на връзка с обикновен текст до криптирана (TLS или SSL) връзка, вместо да използвате отделен порт за криптирана комуникация.",
"LdapGroupAttribute": "Групов атрибут",
"LdapGroupAttributeTooltip": "Въведете атрибута на груповия обект, който указва какви потребители включва тази група.",
"LdapGroupDN": "Групов DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Synchronizace umožní nahrát všechna data z portálu a po změně nastavení aktualizovat nová data. Synchronizace probíhá pokaždé, když se na portálu objeví nová data o uživatelích.",
"LdapAvatar": "Profilová fotografie",
"LdapCertificateConfirm": "Potvrzení certifikátu",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Důvěrnost a zabezpečení přenosů LDAP můžete zajistit pomocí protokolu SSL (Secure Sockets Layer).",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "Funkce StartTLS nabízí způsob, jak povýšit textové připojení na šifrované (TLS nebo SSL) namísto použití samostatného portu pro šifrovanou komunikaci.",
"LdapDisclaimer": "Nezapomeňte, že e-mail uživatele portálu bude převzat z nastavení „Mail Attribute“. Pokud chybí, bude vytvořen následujícím způsobem: „Login Attribute + @ + LDAP Domain“. V případě, že takový e-mail neexistuje, uživatel nedostane žádné oznámení portálu.",
"LdapEnableSSL": "Povolení protokolu SSL",
"LdapEnableSSLTooltip": "Důvěrnost a zabezpečení přenosů LDAP můžete zajistit pomocí protokolu SSL (Secure Sockets Layer).",
"LdapEnableStartTls": "Povolení funkce StartTLS",
"LdapEnableStartTlsTooltip": "Funkce StartTLS nabízí způsob, jak povýšit textové připojení na šifrované (TLS nebo SSL) namísto použití samostatného portu pro šifrovanou komunikaci.",
"LdapGroupAttribute": "Atribut skupiny",
"LdapGroupAttributeTooltip": "Zadejte atribut objektu skupiny, který určuje, jaké uživatele tato skupina zahrnuje.",
"LdapGroupDN": "Skupina DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Die Synchronisierung ermöglicht das Hochladen aller Daten aus dem Portal und die Aktualisierung der neuen Daten nach Änderung der Einstellungen. Synchronisieren Sie jedes Mal, wenn Sie neue Daten über Benutzer im Portal haben.",
"LdapAvatar": "Profilfoto",
"LdapCertificateConfirm": "Zertifikat bestätigen",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Sie können den LDAP-Datenverkehr vertraulich und sicher gestalten, indem Sie Secure Sockets Layer (SSL) verwenden.",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS bietet eine Möglichkeit, eine Klartextverbindung in eine verschlüsselte (TLS oder SSL) Verbindung umzuwandeln, anstatt einen separaten Port für die verschlüsselte Kommunikation zu verwenden.",
"LdapDisclaimer": "Bitte beachten Sie: Die E-Mail des Portalbenutzers wird aus der Einstellung \"Mail-Attribut\" übernommen. Fehlt sie, wird sie folgendermaßen gebildet: \"Login-Attribut + @ + LDAP-Domäne\". Falls eine solche E-Mail nicht existiert, wird der Benutzer keine Portalbenachrichtigung erhalten.",
"LdapEnableSSL": "SSL aktivieren",
"LdapEnableSSLTooltip": "Sie können den LDAP-Datenverkehr vertraulich und sicher gestalten, indem Sie Secure Sockets Layer (SSL) verwenden.",
"LdapEnableStartTls": "StartTLS aktivieren",
"LdapEnableStartTlsTooltip": "StartTLS bietet eine Möglichkeit, eine Klartextverbindung in eine verschlüsselte (TLS oder SSL) Verbindung umzuwandeln, anstatt einen separaten Port für die verschlüsselte Kommunikation zu verwenden.",
"LdapGroupAttribute": "Gruppenattribut",
"LdapGroupAttributeTooltip": "Geben Sie das Attribut des Gruppenobjekts ein, das angibt, welche Benutzer diese Gruppe umfasst.",
"LdapGroupDN": "Gruppen-DN",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Neues Farbschema",
"NextStep": "Nächster Schritt",
"NoEmail": "KEINE EMAIL",
"NoEventsHereYet": "Noch keine Ereignisse hier",
"NoUsersInBackup": "Es wurden keine Benutzer gefunden. Versuchen Sie es erneut oder laden Sie andere Sicherungsdateien hoch.",
"NumberOfActiveEmployees": "Anzahl aktiver Mitarbeiter: {{count}}",
"NumberOfAttempts": "Anzahl der Versuche",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Ο συγχρονισμός θα επιτρέψει τη μεταφόρτωση όλων των δεδομένων από την πύλη και την ενημέρωση των νέων δεδομένων μετά την αλλαγή των ρυθμίσεων. Κάντε συγχρονισμό κάθε φορά που έχετε νέα δεδομένα για τους χρήστες στην πύλη.",
"LdapAvatar": "Φωτογραφία προφίλ",
"LdapCertificateConfirm": "Επιβεβαίωση πιστοποιητικού",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Μπορείτε να καταστήσετε την κυκλοφορία LDAP εμπιστευτική και ασφαλή χρησιμοποιώντας το πρωτόκολλο Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "Το StartTLS προσφέρει έναν τρόπο αναβάθμισης μιας σύνδεσης απλού κειμένου σε μια κρυπτογραφημένη σύνδεση (TLS ή SSL) αντί της χρήσης ξεχωριστής θύρας για κρυπτογραφημένη επικοινωνία.",
"LdapDisclaimer": "Λάβετε υπόψη: το email του χρήστη πύλης θα ληφθεί από τη ρύθμιση «Χαρακτηριστικό Αλληλογραφίας». Εάν λείπει, θα διαμορφωθεί με τον ακόλουθο τρόπο: 'Χαρακτηριστικό Εισόδου + @ + Τομέας LDAP'. Σε περίπτωση που δεν υπάρχει τέτοιο email, ο χρήστης δεν θα λάβει καμία ειδοποίηση από την πύλη.",
"LdapEnableSSL": "Ενεργοποίηση SSL",
"LdapEnableSSLTooltip": "Μπορείτε να καταστήσετε την κυκλοφορία LDAP εμπιστευτική και ασφαλή χρησιμοποιώντας το πρωτόκολλο Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Ενεργοποιήστε το StartTLS",
"LdapEnableStartTlsTooltip": "Το StartTLS προσφέρει έναν τρόπο αναβάθμισης μιας σύνδεσης απλού κειμένου σε μια κρυπτογραφημένη σύνδεση (TLS ή SSL) αντί της χρήσης ξεχωριστής θύρας για κρυπτογραφημένη επικοινωνία.",
"LdapGroupAttribute": "Χαρακτηριστικό ομάδας",
"LdapGroupAttributeTooltip": "Εισαγάγετε το χαρακτηριστικό αντικειμένου ομάδας που καθορίζει ποιους χρήστες περιλαμβάνει αυτή η ομάδα.",
"LdapGroupDN": "DN ομάδας",

View File

@ -8,11 +8,13 @@
"LdapAutoSyncToggleDescription": "Synchronization will allow to upload all the data from the portal and update the new data after changing the settings. Sync every time you have new data on users in the portal.",
"LdapAvatar": "Profile photo",
"LdapCertificateConfirm": "Confirm certificate",
"LdapConnectionType": "Connection Type",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "You can make LDAP traffic confidential and secure by using Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS offers a way to upgrade a plain text connection to an encrypted (TLS or SSL) connection instead of using a separate port for encrypted communication.",
"LdapConnectionTypeUnencrypted": "Unencrypted communication",
"LdapDisclaimer": "Please, keep in mind: the portal user email will be taken from the 'Mail Attribute' setting. If it is missing, it will be formed in the following way: 'Login Attribute + @ + LDAP Domain'. In case such an email does not exist, the user will not receive any portal notification.",
"LdapEnableSSL": "Enable SSL",
"LdapEnableSSLTooltip": "You can make LDAP traffic confidential and secure by using Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Enable StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS offers a way to upgrade a plain text connection to an encrypted (TLS or SSL) connection instead of using a separate port for encrypted communication.",
"LdapGroupAttribute": "Group Attribute",
"LdapGroupAttributeTooltip": "Enter the group object attribute which specifies what users this group includes.",
"LdapGroupDN": "Group DN",

View File

@ -177,6 +177,7 @@
"NewColorScheme": "New color scheme",
"NextStep": "Next step",
"NoEmail": "NO EMAIL",
"NoEventsHereYet": "No events here yet",
"NoUsersInBackup": "No users found. Try again or upload other backup files.",
"NumberOfActiveEmployees": "Number of active employees: {{count}}",
"NumberOfAttempts": "Number of attempts",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "La sincronización permitirá cargar todos los datos del portal y actualizar los nuevos datos después de cambiar la configuración. Sincronice cada vez que tenga nuevos datos de usuarios en el portal.",
"LdapAvatar": "Foto de perfil",
"LdapCertificateConfirm": "Confirmar certificado",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Puede hacer que el tráfico LDAP sea confidencial y seguro utilizando Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS ofrece una forma de actualizar una conexión de texto sin formato a una conexión cifrada (TLS o SSL) en lugar de utilizar un puerto independiente para la comunicación cifrada.",
"LdapDisclaimer": "Por favor, tenga en cuenta: el correo electrónico del usuario del portal se tomará desde la configuración 'Atributo de correo'. Si falta, se formará de la siguiente manera: 'Atributo de inicio de sesión + @ + Dominio LDAP'. En caso de que dicho correo electrónico no exista, el usuario no recibirá ninguna notificación del portal.",
"LdapEnableSSL": "Habilitar SSL",
"LdapEnableSSLTooltip": "Puede hacer que el tráfico LDAP sea confidencial y seguro utilizando Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Habilitar InicioTLS",
"LdapEnableStartTlsTooltip": "StartTLS ofrece una forma de actualizar una conexión de texto sin formato a una conexión cifrada (TLS o SSL) en lugar de utilizar un puerto independiente para la comunicación cifrada.",
"LdapGroupAttribute": "Atributo de grupo",
"LdapGroupAttributeTooltip": "Introduzca el atributo del objeto de grupo que especifica qué usuarios incluye este grupo.",
"LdapGroupDN": "DN de grupo",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Nueva combinación de colores",
"NextStep": "Próximo paso",
"NoEmail": "SIN CORREO ELECTRÓNICO",
"NoEventsHereYet": "No hay eventos aquí todavía",
"NoUsersInBackup": "No se han encontrado usuarios. Inténtelo de nuevo o cargue otros archivos de copia de seguridad.",
"NumberOfActiveEmployees": "Número de empleados activos: {{count}}",
"NumberOfAttempts": "Número de intentos",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Synkronointi mahdollistaa kaikkien tietojen lataamisen portaalista ja uusien tietojen päivittämisen asetusten muuttamisen jälkeen. Synkronoi aina, kun sinulla on portaalissa uutta tietoa käyttäjistä.",
"LdapAvatar": "Profiilikuva",
"LdapCertificateConfirm": "Vahvista sertifikaatti",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Voit muuttaa LDAP-liikenteen luottamukselliseksi ja turvalliseksi käyttäen Secure Sockets Layeriä (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS tarjoaa tavan päivittää tavallinen tekstiyhteys salattuun (TLS tai SSL) yhteyteen sen sijaa, että käytettäisiin erillistä porttia salattua yhteyttä varten.",
"LdapDisclaimer": "Pidä mielessä: portaalin käyttäjän sähköposti otetaan Postiattribuutti-asetuksesta. Jos sitä ei ole, se muodostetaan seuraavalla tavalla: Kirjautumisattribuutti + LDAP-domain. Jos sähköpostia ei ole, käyttäjä ei saa mitään portaalin ilmoituksia.",
"LdapEnableSSL": "Ota SSL käyttöön",
"LdapEnableSSLTooltip": "Voit muuttaa LDAP-liikenteen luottamukselliseksi ja turvalliseksi käyttäen Secure Sockets Layeriä (SSL)",
"LdapEnableStartTls": "Ota StartTLS käyttöön",
"LdapEnableStartTlsTooltip": "StartTLS tarjoaa tavan päivittää tavallinen tekstiyhteys salattuun (TLS tai SSL) yhteyteen sen sijaa, että käytettäisiin erillistä porttia salattua yhteyttä varten.",
"LdapGroupAttribute": "Ryhmäattribuutti",
"LdapGroupAttributeTooltip": "Syötä ryhmän objektiattribuutti, joka määrittelee mitä käyttäjiä tämä ryhmä sisältää.",
"LdapGroupDN": "Ryhmä DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "La synchronisation permet de télécharger toutes les données du portail et de mettre à jour les nouvelles données après avoir modifié les paramètres. Synchronisez chaque fois que vous avez de nouvelles données sur les utilisateurs dans lespace.",
"LdapAvatar": "Photo de profil",
"LdapCertificateConfirm": "Confirmer le certificat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Vous pouvez rendre le trafic LDAP confidentiel et sécurisé en utilisant le protocole SSL (Secure Sockets Layer).",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS permet de transformer une connexion en texte brut en une connexion cryptée (TLS ou SSL) au lieu d'utiliser un port distinct pour la communication cryptée.",
"LdapDisclaimer": "N'oubliez pas que l'adresse e-mail de l'utilisateur de l'espace est tirée du paramètre \"Attribut de messagerie\". S'il n'existe pas, il sera formé de la manière suivante : \"Attribut de connexion + @ + Domaine LDAP\". Si cet e-mail n'existe pas, l'utilisateur ne recevra aucune notification de l'espace.",
"LdapEnableSSL": "Activer SSL",
"LdapEnableSSLTooltip": "Vous pouvez rendre le trafic LDAP confidentiel et sécurisé en utilisant le protocole SSL (Secure Sockets Layer).",
"LdapEnableStartTls": "Activer StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS permet de transformer une connexion en texte brut en une connexion cryptée (TLS ou SSL) au lieu d'utiliser un port distinct pour la communication cryptée.",
"LdapGroupAttribute": "Attribut du groupe",
"LdapGroupAttributeTooltip": "Entrez un attribut de l'objet groupe qui spécifie quels utilisateurs sont membres de ce groupe.",
"LdapGroupDN": "Groupe DN",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Nouvelle palette de couleurs",
"NextStep": "Étape suivante",
"NoEmail": "AUCUN E-MAIL",
"NoEventsHereYet": "Aucun événement ici pour le moment",
"NoUsersInBackup": "Aucun utilisateur na été trouvé. Réessayez ou téléchargez dautres fichiers de sauvegarde.",
"NumberOfActiveEmployees": "Nombre d'employés actifs {{count}}",
"NumberOfAttempts": "Nombre de tentatives",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Սինխրոնիզացիան թույլ կտա վերբեռնել բոլոր տվյալները պորտալից և թարմացնել նոր տվյալները՝ կարգավորումները փոխելուց հետո: Սինխրոնիզացրեք ամեն անգամ, երբ պորտալում օգտատերերի մասին նոր տվյալներ ունեք:",
"LdapAvatar": "Պրոֆիլի լուսանկար",
"LdapCertificateConfirm": "Հաստատել վկայականը",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Դուք կարող եք դարձնել LDAP-ը գաղտնի և անվտանգ, օգտագործելով Secure Sockets Layer (SSL):",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS-ն առաջարկում է պարզ տեքստային կապը գաղտնագրված (TLS կամ SSL) կապի թարմացման միջոց՝ կոդավորված հաղորդակցության համար առանձին պորտ օգտագործելու փոխարեն: ",
"LdapDisclaimer": "Խնդրում ենք նկատի ունենալ՝ պորտալի օգտատիրոջ էլ.փոստը կվերցվի «Փոստի հատկանիշ» կարգավորումից: Եթե ​​այն բացակայում է, այն կձևավորվի հետևյալ կերպ՝ «Մուտքի հատկանիշ + @ + LDAP տիրույթ»: Եթե նման նամակ չկա, այդ դեպքում օգտատերը չի ստանա որևէ պորտալի ծանուցում:",
"LdapEnableSSL": "Միացնել SSL-ը",
"LdapEnableSSLTooltip": "Դուք կարող եք դարձնել LDAP-ը գաղտնի և անվտանգ, օգտագործելով Secure Sockets Layer (SSL):",
"LdapEnableStartTls": "Միացնել StartTLS-ը",
"LdapEnableStartTlsTooltip": "StartTLS-ն առաջարկում է պարզ տեքստային կապը գաղտնագրված (TLS կամ SSL) կապի թարմացման միջոց՝ կոդավորված հաղորդակցության համար առանձին պորտ օգտագործելու փոխարեն: ",
"LdapGroupAttribute": "Խմբի հատկանիշ",
"LdapGroupAttributeTooltip": "Մուտքագրեք խմբի օբյեկտի հատկանիշը, որը նշում է, թե ինչ օգտվողներ է ներառում այս խումբը:",
"LdapGroupDN": "Խումբ DN",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Նոր գունային սխեմա",
"NextStep": "Հաջորդ քայլը",
"NoEmail": "Էլ.հասցե չկա",
"NoEventsHereYet": "Այստեղ դեռ իրադարձություններ չկան",
"NoUsersInBackup": "Ոչ մի օգտվող չի գտնվել: Կրկին փորձեք կամ վերբեռնեք այլ պահուստային ֆայլեր:",
"NumberOfActiveEmployees": "Ակտիվ աշխատողների թիվը՝ {{count}}",
"NumberOfAttempts": "Փորձերի քանակը",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "La sincronizzazione consentirà di caricare tutti i dati dal portale e aggiornare i nuovi dati dopo aver modificato le impostazioni. Sincronizza ogni volta che hai nuovi dati sugli utenti nel portale.",
"LdapAvatar": "Foto del profilo",
"LdapCertificateConfirm": "Conferma il certificato",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Puoi rendere il traffico LDAP riservato e sicuro utilizzando Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS offre un modo per aggiornare una connessione di testo normale a una connessione crittografata (TLS o SSL) invece di utilizzare una porta separata per la comunicazione crittografata.",
"LdapDisclaimer": "Tieni presente che l'e-mail dell'utente del portale verrà presa dall'impostazione 'Attributo posta'. Se manca, sarà formato nel seguente modo: 'Attributo login + @ + Dominio LDAP'. Nel caso in cui tale email non esista, l'utente non riceverà alcuna notifica dal portale.",
"LdapEnableSSL": "Abilita SSL",
"LdapEnableSSLTooltip": "Puoi rendere il traffico LDAP riservato e sicuro utilizzando Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Abilita StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS offre un modo per aggiornare una connessione di testo normale a una connessione crittografata (TLS o SSL) invece di utilizzare una porta separata per la comunicazione crittografata.",
"LdapGroupAttribute": "Attributo del gruppo",
"LdapGroupAttributeTooltip": "Inserisci l'attributo dell'oggetto del gruppo che specifica quali utenti include questo gruppo.",
"LdapGroupDN": "DN del gruppo",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Nuova combinazione di colori",
"NextStep": "Passo successivo",
"NoEmail": "NESSUNA E-MAIL",
"NoEventsHereYet": "Non ci sono ancora eventi qui",
"NoUsersInBackup": "Nessun utente trovato. Riprova o carica altri file di backup.",
"NumberOfActiveEmployees": "Numero di dipendenti attivi: {{count}}",
"NumberOfAttempts": "Numero di tentativi",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "同期により、ポータルからすべてのデータをアップロードし、設定変更後に新しいデータを更新することができます。ポータルのユーザーの新しいデータがあるたびに同期してください。",
"LdapAvatar": "プロフィール写真",
"LdapCertificateConfirm": "証明書の確認",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "セキュア・ソケット・レイヤーSSLを使用することで、LDAPトラフィックの機密性と安全性を高めることができます。",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLSは、暗号化通信用に別のポートを使用する代わりに、プレーンテキスト接続を暗号化TLSまたはSSL接続にアップグレードする方法を提供します。",
"LdapDisclaimer": "ポータルユーザのメールアドレスは「メール属性」設定から取得されます。メール属性がない場合は、「ログイン属性 + @ + LDAPドメイン」で作成されます。このようなメールが存在しない場合、ユーザはポータル通知を受け取りません。",
"LdapEnableSSL": "SSLの有効化",
"LdapEnableSSLTooltip": "セキュア・ソケット・レイヤーSSLを使用することで、LDAPトラフィックの機密性と安全性を高めることができます。",
"LdapEnableStartTls": "StartTLS を有効にする",
"LdapEnableStartTlsTooltip": "StartTLSは、暗号化通信用に別のポートを使用する代わりに、プレーンテキスト接続を暗号化TLSまたはSSL接続にアップグレードする方法を提供します。",
"LdapGroupAttribute": "グループ属性",
"LdapGroupAttributeTooltip": "このグループに含まれるユーザーを指定するグループオブジェクト属性を入力してください。",
"LdapGroupDN": "グループDN",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "新しいカラースキーム",
"NextStep": "次のステップ",
"NoEmail": "NO EMAIL",
"NoEventsHereYet": "まだイベントはありません",
"NoUsersInBackup": "ユーザが見つかりません。再試行するか、他のバックアップファイルをアップロードしてください。",
"NumberOfActiveEmployees": "アクティブな社員数:{{count}}",
"NumberOfAttempts": "試行回数",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "동기화를 통해 포털에서 모든 데이터를 업로드하고 설정을 변경한 후 새 데이터를 업데이트할 수 있습니다. 포털에 사용자에 대한 새로운 데이터가 있을 때마다 동기화하세요.",
"LdapAvatar": "프로필 사진",
"LdapCertificateConfirm": "인증서 확인",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "보안 소켓 계층(SSL)을 사용하여 LDAP 트래픽을 기밀로 유지하고 보안을 유지할 수 있습니다",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS는 암호화된 통신에 별도의 포트를 사용하는 대신 일반 텍스트 연결을 암호화(TLS 또는 SSL) 연결로 업그레이드하는 방법을 제공합니다.",
"LdapDisclaimer": "다음 사항을 유의하세요: 포털 사용자 이메일은 '메일 속성' 설정에서 가져와집니다. 누락된 경우 다음과 같은 방식으로 구성됩니다: '로그인 속성 + @ + LDAP 도메인'. 이러한 이메일이 없는 경우 사용자는 포털 알림을 받지 못합니다.",
"LdapEnableSSL": "SSL 활성화",
"LdapEnableSSLTooltip": "보안 소켓 계층(SSL)을 사용하여 LDAP 트래픽을 기밀로 유지하고 보안을 유지할 수 있습니다",
"LdapEnableStartTls": "StartTLS 활성화",
"LdapEnableStartTlsTooltip": "StartTLS는 암호화된 통신에 별도의 포트를 사용하는 대신 일반 텍스트 연결을 암호화(TLS 또는 SSL) 연결로 업그레이드하는 방법을 제공합니다.",
"LdapGroupAttribute": "그룹 속성",
"LdapGroupAttributeTooltip": "이 그룹에 포함될 사용자를 지정하는 그룹 개체 속성을 입력하세요.",
"LdapGroupDN": "그룹 DN",

View File

@ -1 +1,4 @@
{}
{
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeStartTls": "StartTLS"
}

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Sinhronizācija ļaus augšupielādēt visus datus no portāla un atjaunināt jaunos datus pēc iestatījumu maiņas. Sinhronizējiet katru reizi, kad portālā ir jauni dati par lietotājiem.",
"LdapAvatar": "Profila fotoattēls",
"LdapCertificateConfirm": "Apstiprināt sertifikātu",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "LDAP datplūsmu varat padarīt konfidenciālu un drošu, izmantojot drošligzdu slāni (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS piedāvā veidu, kā vienkāršā teksta savienojumu jaunināt uz šifrētu (TLS vai SSL) savienojumu, nevis izmantot atsevišķu portu šifrētai saziņai.",
"LdapDisclaimer": "Ņemiet vērā: portāla lietotāja e-pasts tiks ņemts no iestatījuma Pasta atribūts. Ja tas trūkst, tas tiks izveidots šādā veidā: Pieteikšanās atribūts + @ + LDAP domēns. Ja šāds e-pasts nepastāv, lietotājs nesaņems portāla paziņojumu.",
"LdapEnableSSL": "Iespējot SSL",
"LdapEnableSSLTooltip": "LDAP datplūsmu varat padarīt konfidenciālu un drošu, izmantojot drošligzdu slāni (SSL)",
"LdapEnableStartTls": "Iespējot StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS piedāvā veidu, kā vienkāršā teksta savienojumu jaunināt uz šifrētu (TLS vai SSL) savienojumu, nevis izmantot atsevišķu portu šifrētai saziņai.",
"LdapGroupAttribute": "Grupas atribūts",
"LdapGroupAttributeTooltip": "Ievadiet grupas objekta atribūtu, kas norāda, kādus lietotājus šī grupa ietver.",
"LdapGroupDN": "Grupas DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Synchronisatie maakt het mogelijk om alle gegevens van het portaal te uploaden en de nieuwe gegevens bij te werken na het wijzigen van de instellingen. Synchroniseer elke keer als u nieuwe gegevens over gebruikers in de portaal hebt.",
"LdapAvatar": "Profielfoto",
"LdapCertificateConfirm": "Bevestig certificaat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "U kunt LDAP-verkeer vertrouwelijk en veilig maken door SSL (Secure Sockets Layer) te gebruiken.",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS biedt een manier om een verbinding met platte tekst te upgraden naar een versleutelde (TLS of SSL) verbinding in plaats van een aparte poort te gebruiken voor versleutelde communicatie.",
"LdapDisclaimer": "Vergeet niet: het e-mailadres van de portaalgebruiker wordt gehaald uit de instelling \"Mail Attribuut\". Als het ontbreekt, wordt het op de volgende manier gevormd: \"Login Attribuut + @ + LDAP Domein\". Als een dergelijke e-mail niet bestaat, ontvangt de gebruiker geen portaalmelding.",
"LdapEnableSSL": "SSL inschakelen",
"LdapEnableSSLTooltip": "U kunt LDAP-verkeer vertrouwelijk en veilig maken door SSL (Secure Sockets Layer) te gebruiken.",
"LdapEnableStartTls": "StartTLS inschakelen",
"LdapEnableStartTlsTooltip": "StartTLS biedt een manier om een verbinding met platte tekst te upgraden naar een versleutelde (TLS of SSL) verbinding in plaats van een aparte poort te gebruiken voor versleutelde communicatie.",
"LdapGroupAttribute": "Groepsattribuut",
"LdapGroupAttributeTooltip": "Voer het groepsobject attribuut in dat aangeeft welke gebruikers deze groep bevat.",
"LdapGroupDN": "Groep DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Synchronizacja umożliwia przesyłanie wszystkich danych z portalu i aktualizację nowych danych po zmianie ustawień. Synchronizuj za każdym razem, gdy masz nowe dane na temat użytkowników w portalu.",
"LdapAvatar": "Zdjęcie profilowe",
"LdapCertificateConfirm": "Potwierdź certyfikat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Zadbaj o bezpieczeństwo i poufność ruchu LDAP za pomocą Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS umożliwia ulepszenie połączenia jawnego do połączenia szyfrowanego (TLS lub SSL) zamiast używania oddzielnego portu do komunikacji szyfrowanej.",
"LdapDisclaimer": "Należy pamiętać, że e-mail użytkownika portalu zostanie pobrany z ustawienia „Atrybut poczty”. Jeśli go nie ma, zostanie sformułowany w następujący sposób: „Atrybut logowania + @ + domena LDAP”. Jeśli dany adres e-mail nie istnieje, użytkownik nie otrzyma żadnego powiadomienia z portalu.",
"LdapEnableSSL": "Włącz SSL",
"LdapEnableSSLTooltip": "Zadbaj o bezpieczeństwo i poufność ruchu LDAP za pomocą Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Włącz StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS umożliwia ulepszenie połączenia jawnego do połączenia szyfrowanego (TLS lub SSL) zamiast używania oddzielnego portu do komunikacji szyfrowanej.",
"LdapGroupAttribute": "Atrybut grupy",
"LdapGroupAttributeTooltip": "Wprowadź atrybut obiektu grupy, który określa, jakich użytkowników obejmuje ta grupa.",
"LdapGroupDN": "Nazwa wyróżniająca grupy",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "A sincronização permitirá fazer upload de todos os dados do portal e atualizar os novos dados após alterar as configurações. Sincronize sempre que tiver novos dados de usuários no portal.",
"LdapAvatar": "Foto de perfil",
"LdapCertificateConfirm": "Confirmar certificado",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Você pode tornar o tráfego LDAP confidencial e seguro usando Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS oferece uma maneira de atualizar uma conexão de texto simples para uma conexão criptografada (TLS ou SSL) em vez de usar uma porta separada para comunicação criptografada.",
"LdapDisclaimer": "Por favor, lembre-se: o e-mail do usuário do portal será retirado da configuração 'Atributo de e-mail'. Caso falte, será formado da seguinte forma: 'Atributo Login + @ + Domínio LDAP'. Caso tal e-mail não exista, o usuário não receberá nenhuma notificação do portal.",
"LdapEnableSSL": "Habilitar SSL",
"LdapEnableSSLTooltip": "Você pode tornar o tráfego LDAP confidencial e seguro usando Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Habilitar StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS oferece uma maneira de atualizar uma conexão de texto simples para uma conexão criptografada (TLS ou SSL) em vez de usar uma porta separada para comunicação criptografada.",
"LdapGroupAttribute": "Atributo de grupo",
"LdapGroupAttributeTooltip": "Insira o atributo do objeto de grupo que especifica quais usuários esse grupo inclui.",
"LdapGroupDN": "DN do grupo",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Novo esquema de cores",
"NextStep": "Próxima Etapa",
"NoEmail": "SEM E-MAIL",
"NoEventsHereYet": "Ainda não há eventos aqui",
"NoUsersInBackup": "Usuários não encontrados. Tente novamente ou carregue outros arquivos de backup.",
"NumberOfActiveEmployees": "Número de funcionários ativos: {{count}}",
"NumberOfAttempts": "Número de tentativas",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "A sincronização permitirá fazer upload de todos os dados do portal e atualizar os novos dados após alterar as configurações. Sincronize sempre que tiver novos dados de usuários no portal.",
"LdapAvatar": "Foto de perfil",
"LdapCertificateConfirm": "Confirmar certificado",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Você pode tornar o tráfego LDAP confidencial e seguro usando Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS oferece uma maneira de atualizar uma conexão de texto simples para uma conexão criptografada (TLS ou SSL) em vez de usar uma porta separada para comunicação criptografada.",
"LdapDisclaimer": "Por favor, lembre-se: o e-mail do usuário do portal será retirado da configuração 'Atributo de e-mail'. Caso falte, será formado da seguinte forma: 'Atributo Login + @ + Domínio LDAP'. Caso tal e-mail não exista, o usuário não receberá nenhuma notificação do portal.",
"LdapEnableSSL": "Habilitar SSL",
"LdapEnableSSLTooltip": "Você pode tornar o tráfego LDAP confidencial e seguro usando Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Habilitar StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS oferece uma maneira de atualizar uma conexão de texto simples para uma conexão criptografada (TLS ou SSL) em vez de usar uma porta separada para comunicação criptografada.",
"LdapGroupAttribute": "Atributo de grupo",
"LdapGroupAttributeTooltip": "Insira o atributo do objeto de grupo que especifica quais usuários esse grupo inclui.",
"LdapGroupDN": "DN do grupo",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Sincronizare permite încărcarea tuturor datelor de pe portalul și actualizarea datelor după modificarea setărilor. Realizarea sincronizării este necesară de fiecare dată când adăugați datele noi despre utilizatorii din portal.",
"LdapAvatar": "Fotografie de profil",
"LdapCertificateConfirm": "Confirmare certificat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Utilizarea protocolului Secure Sockets Layer (SSL) securizează și protejează confidențialitatea procesului de comunicare cu serverul LDAP.",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS permite actualizarea unei conexiuni de text simplu la o conexiune sigură (TLS sau SSL) și înlocuiește folosirea unui port separat pentru asigurarea conexiunii criptate.",
"LdapDisclaimer": "Rețineți că adresa de e-mail a utilizatorului portalului va fi preluată din setările Atributul Mail. Dacă adresa de e-mail lipsește, aceasta va fi formată în felul următor: 'Atributul de conectare + @ + Domeniu LDAP'. Dacă o astfel de adresă de e-mail nu există, utilizatorul nu va primi nici-o notificare de portal.",
"LdapEnableSSL": "Activare autentificare unică",
"LdapEnableSSLTooltip": "Utilizarea protocolului Secure Sockets Layer (SSL) securizează și protejează confidențialitatea procesului de comunicare cu serverul LDAP.",
"LdapEnableStartTls": "Activare StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS permite actualizarea unei conexiuni de text simplu la o conexiune sigură (TLS sau SSL) și înlocuiește folosirea unui port separat pentru asigurarea conexiunii criptate.",
"LdapGroupAttribute": "Atributul de grup",
"LdapGroupAttributeTooltip": "Introduceți atributul obiectului de grup care indică utilizatorii din acest grup.",
"LdapGroupDN": "Nume distinct de grup",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Schemă de culori nouă",
"NextStep": "Etapa următoare ",
"NoEmail": "NICIUN E-EMAIL",
"NoEventsHereYet": "Deocamdată, niciun eveniment aici.",
"NoUsersInBackup": "Nu s-au găsit utilizatori. Încercaţi din nou sau încărcați alte fișiere de rezervă.",
"NumberOfActiveEmployees": "Numărul de angajați activi: {{count}}",
"NumberOfAttempts": "Numărul de încercări",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Синхронизация позволит загрузить все данные с портала и обновить новые данные после изменения настроек. Синхронизируйте каждый раз, когда у вас появляются новые данные о пользователях на портале.",
"LdapAvatar": "Фото профиля",
"LdapCertificateConfirm": "Подтвердить сертификат",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Вы можете сделать трафик LDAP конфиденциальным и безопасным, используя Secure Sockets Layer (SSL).",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS предоставляет способ обновления обычного текстового соединения до зашифрованного (TLS или SSL) соединения вместо использования отдельного порта для зашифрованной связи.",
"LdapDisclaimer": "Обратите внимание: адрес электронной почты пользователя портала будет взят из параметра \"Атрибут почты\". Если он отсутствует, то он будет сформирован следующим образом: \"Атрибут входа + @ + LDAP Домен\". Если такого электронного письма не существует, пользователь не получит никаких уведомлений портала.",
"LdapEnableSSL": "Включить SSL",
"LdapEnableSSLTooltip": "Вы можете сделать трафик LDAP конфиденциальным и безопасным, используя Secure Sockets Layer (SSL).",
"LdapEnableStartTls": "Включить StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS предоставляет способ обновления обычного текстового соединения до зашифрованного (TLS или SSL) соединения вместо использования отдельного порта для зашифрованной связи.",
"LdapGroupAttribute": "Атрибут группы",
"LdapGroupAttributeTooltip": "Введите атрибут объекта группы, который определяет, какие пользователи входят в эту группу.",
"LdapGroupDN": "DN группы",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "Новая цветовая схема",
"NextStep": "Следующий шаг",
"NoEmail": "НЕТ ЭЛЕКТРОННОЙ ПОЧТЫ",
"NoEventsHereYet": "Здесь пока нет событий",
"NoUsersInBackup": "Пользователи не найдены. Попробуйте снова или загрузите другие файлы резервной копии.",
"NumberOfActiveEmployees": "Количество активных сотрудников: {{count}}",
"NumberOfAttempts": "Число попыток",

View File

@ -1 +1,4 @@
{}
{
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeStartTls": "StartTLS"
}

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Synchronizácia umožní nahrať všetky údaje z portálu a aktualizovať nové údaje po zmene nastavení. Synchronizujte vždy, keď máte na portáli nové údaje o používateľoch.",
"LdapAvatar": "Profilová fotografia",
"LdapCertificateConfirm": "Potvrdiť certifikát",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Dôvernosť a bezpečnosť prevádzky LDAP môžete zabezpečiť pomocou protokolu SSL (Secure Sockets Layer).",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS ponúka spôsob, ako vylepšiť obyčajné textové pripojenie na šifrované (TLS alebo SSL) namiesto používania samostatného portu na šifrovanie komunikácie.",
"LdapDisclaimer": "Nezabudnite prosím, že e-mail používateľa portálu bude prevzatý z nastavenia „Atribút Pošta“. Ak tento atribút chýba, e=mail bude vytvorený nasledovným spôsobom: „Atribút Prihlásenie + @ + LDAP doména“. V prípade, že takýto e-mail neexistuje, používateľ nedostane žiadne oznámenie z portálu.",
"LdapEnableSSL": "Povoliť SSL",
"LdapEnableSSLTooltip": "Dôvernosť a bezpečnosť prevádzky LDAP môžete zabezpečiť pomocou protokolu SSL (Secure Sockets Layer).",
"LdapEnableStartTls": "Povoliť StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS ponúka spôsob, ako vylepšiť obyčajné textové pripojenie na šifrované (TLS alebo SSL) namiesto používania samostatného portu na šifrovanie komunikácie.",
"LdapGroupAttribute": "Atribút Skupina",
"LdapGroupAttributeTooltip": "Zadajte atribút objektu skupiny, ktorý určuje, akých používateľov táto skupina združuje.",
"LdapGroupDN": "DN skupiny",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Sinhronizacija bo omogočila nalaganje vseh podatkov s portala in posodobitev novih podatkov po spremembi nastavitev. Sinhroniziraj vsakič, ko so na voljo novi podatki o uporabnikih na portalu.",
"LdapAvatar": "Profilna fotografija",
"LdapCertificateConfirm": "Potrdi certifikat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Zaupen in varen promet LDAP lahko urediš z uporabo Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS ponuja način za nadgradnjo povezave z navadnim besedilom v šifrirano (TLS ali SSL) povezavo namesto uporabe ločenih vrat za šifrirano komunikacijo.",
"LdapDisclaimer": "Upoštevaj: e-pošta uporabnika portala bo vzeta iz nastavitve 'Atributi pošte'. Če manjka, bo oblikovana na naslednji način: 'Login Attribute + @ + LDAP Domain'. V primeru, da tak email ne obstaja, uporabnik ne bo prejel nobenega obvestila s portala.",
"LdapEnableSSL": "Omogoči SSL",
"LdapEnableSSLTooltip": "Zaupen in varen promet LDAP lahko urediš z uporabo Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Omogoči StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS ponuja način za nadgradnjo povezave z navadnim besedilom v šifrirano (TLS ali SSL) povezavo namesto uporabe ločenih vrat za šifrirano komunikacijo.",
"LdapGroupAttribute": "Atribut skupine",
"LdapGroupAttributeTooltip": "Vnesite atribut objekta skupine, ki določa, katere uporabnike vključuje ta skupina.",
"LdapGroupDN": "DN skupine",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Синхронизација ће омогућити отпремање свих података са портала и ажурирање нових података након промене подешавања. Синхронизујте сваки пут када имате нове податке о корисницима на порталу.",
"LdapAvatar": "Профилна фотографија",
"LdapCertificateConfirm": "Потврди сертификат",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Можете учинити LDAP саобраћај поверљивим и сигурним коришћењем Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS нуди начин да се обична текстуална веза надогради на енкриптовану (TLS или SSL) везу уместо коришћења засебног порта за енкриптовану комуникацију.",
"LdapDisclaimer": "Молимо, имајте на уму: емаил корисника портал ће бити узет из ‘Мејл Атрибут’ подешавања. Ако недостаје, биће формиран на следећи начин: ‘Атрибут за пријаву + @ + LDAP Домен’. У случају да такав мејл не постоји, корисник неће примити обавештење са портала.",
"LdapEnableSSL": "Омогући SSL",
"LdapEnableSSLTooltip": "Можете учинити LDAP саобраћај поверљивим и сигурним коришћењем Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Омогући StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS нуди начин да се обична текстуална веза надогради на енкриптовану (TLS или SSL) везу уместо коришћења засебног порта за енкриптовану комуникацију.",
"LdapGroupAttribute": "Групни Атрибут",
"LdapGroupAttributeTooltip": "Унесите атрибут објекта групе који одређује које кориснике ова група укључује.",
"LdapGroupDN": "DN Групе",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Sinhronizacija će omogućiti otpremanje svih podataka sa portala i ažuriranje novih podataka nakon promene podešavanja. Sinhronizujte svaki put kada imate nove podatke o korisnicima na portalu.",
"LdapAvatar": "Profilna fotografija",
"LdapCertificateConfirm": "Potvrdi sertifikat",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Možete učiniti LDAP saobraćaj poverljivim i sigurnim korišćenjem Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS nudi način da se obična tekstualna veza nadogradi na enkriptovanu (TLS ili SSL) vezu umesto korišćenja zasebnog porta za enkriptovanu komunikaciju.",
"LdapDisclaimer": "Molimo, imajte na umu: email korisnika portal će biti uzet iz Mejl Atribut podešavanja. Ako nedostaje, biće formiran na sledeći način: Atribut za prijavu + @ + LDAP Domen. U slučaju da takav mejl ne postoji, korisnik neće primiti obaveštenje sa portala.",
"LdapEnableSSL": "Omogući SSL",
"LdapEnableSSLTooltip": "Možete učiniti LDAP saobraćaj poverljivim i sigurnim korišćenjem Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Omogući StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS nudi način da se obična tekstualna veza nadogradi na enkriptovanu (TLS ili SSL) vezu umesto korišćenja zasebnog porta za enkriptovanu komunikaciju.",
"LdapGroupAttribute": "Grupni Atribut",
"LdapGroupAttributeTooltip": "Unesite atribut objekta grupe koji određuje koje korisnike ova grupa uključuje.",
"LdapGroupDN": "DN Grupe",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Senkronizasyon, portaldan tüm verilerin yüklenmesine ve ayarlar değiştirildikten sonra yeni verilerin güncellenmesine olanak sağlayacaktır. Portaldaki kullanıcılara ilişkin her yeni veriye sahip olduğunuzda senkronizasyon yapın.",
"LdapAvatar": "Profil fotoğrafı",
"LdapCertificateConfirm": "Sertifikayı onaylayın",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Secure Sockets Layer (SSL) kullanarak LDAP trafiğini gizli ve güvenli bir hale getirebilirsiniz",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS, şifreli iletişim için ayrı bir bağlantı noktası kullanmak yerine düz metin bağlantısını şifreli (TLS veya SSL) bağlantıya yükseltmenin bir yolunu sunmaktadır.",
"LdapDisclaimer": "Lütfen unutmayın: portal kullanıcı e-postası 'Posta Özelliği' ayarından alınacaktır. Eğer bu eksikse, şu şekilde oluşturulacaktır: 'Oturum Açma Özelliği + @ + LDAP Alanı'. Böyle bir e-postanın mevcut olmaması durumunda, kullanıcı herhangi bir portal bildirimi almayacaktır.",
"LdapEnableSSL": "SSL'i Etkinleştir",
"LdapEnableSSLTooltip": "Secure Sockets Layer (SSL) kullanarak LDAP trafiğini gizli ve güvenli bir hale getirebilirsiniz",
"LdapEnableStartTls": "StartTLS'yi Etkinleştir",
"LdapEnableStartTlsTooltip": "StartTLS, şifreli iletişim için ayrı bir bağlantı noktası kullanmak yerine düz metin bağlantısını şifreli (TLS veya SSL) bağlantıya yükseltmenin bir yolunu sunmaktadır.",
"LdapGroupAttribute": "Grup Özelliği",
"LdapGroupAttributeTooltip": "Bu grubun hangi kullanıcıları içerdiğini belirten grup nesnesi özelliğini girin.",
"LdapGroupDN": "Grup DN",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Синхронізація дозволить передати всі дані з порталу та оновити нові дані після зміни параметрів. Синхронізація відбувається кожен раз, коли є нові дані щодо користувачів на порталі.",
"LdapAvatar": "Фото профілю",
"LdapCertificateConfirm": "Підтвердити сертифікат",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Ви можете зробити трафік LDAP конфіденційним і безпечним за допомогою протоколу Secure Sockets Layer (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS дозволяє оновити звичайне текстове з'єднання до зашифрованого (TLS або SSL) з'єднання замість використання окремого порту для зашифрованого зв'язку.",
"LdapDisclaimer": "Зауважте: електронна адреса користувача порталу буде взята з параметра «Атрибут пошти». Якщо вона відсутня, то буде сформована таким чином: атрибут входу + @ + домен LDAP. Якщо така адреса електронної пошти не існує, користувач не отримає жодного сповіщення від порталу.",
"LdapEnableSSL": "Увімкнути SSL",
"LdapEnableSSLTooltip": "Ви можете зробити трафік LDAP конфіденційним і безпечним за допомогою протоколу Secure Sockets Layer (SSL)",
"LdapEnableStartTls": "Увімкнути StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS дозволяє оновити звичайне текстове з'єднання до зашифрованого (TLS або SSL) з'єднання замість використання окремого порту для зашифрованого зв'язку.",
"LdapGroupAttribute": "Атрибут групи",
"LdapGroupAttributeTooltip": "Введіть атрибут об'єкта групи, який визначає, яких користувачів включає ця група.",
"LdapGroupDN": "Унікальне ім'я групи",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "Đồng bộ hóa sẽ cho phép tải lên tất cả dữ liệu từ cổng thông tin và cập nhật dữ liệu mới sau khi thay đổi cài đặt. Đồng bộ hóa mỗi khi bạn có dữ liệu mới về người dùng trong cổng thông tin.",
"LdapAvatar": "Ảnh đại diện",
"LdapCertificateConfirm": "Xác nhận chứng nhận",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "Bạn có thể làm cho lưu lượng LDAP được bảo mật và an toàn bằng cách sử dụng Lớp Cổng Bảo Mật (SSL)",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS cung cấp một cách để nâng cấp kết nối văn bản thuần túy thành kết nối được mã hóa (TLS hoặc SSL) thay vì sử dụng một cổng riêng cho việc giao tiếp được mã hóa.",
"LdapDisclaimer": "Xin hãy lưu ý: email người dùng cổng thông tin sẽ được lấy từ cài đặt 'Thuộc tính thư'. Nếu nó bị thiếu, nó sẽ được hình thành theo cách sau: 'Thuộc tính đăng nhập + @ + Tên miền LDAP'. Trong trường hợp email không tồn tại, người dùng sẽ không nhận được bất kỳ thông báo cổng thông tin nào.",
"LdapEnableSSL": "Bật SSL",
"LdapEnableSSLTooltip": "Bạn có thể làm cho lưu lượng LDAP được bảo mật và an toàn bằng cách sử dụng Lớp Cổng Bảo Mật (SSL)",
"LdapEnableStartTls": "Kích hoạt StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS cung cấp một cách để nâng cấp kết nối văn bản thuần túy thành kết nối được mã hóa (TLS hoặc SSL) thay vì sử dụng một cổng riêng cho việc giao tiếp được mã hóa.",
"LdapGroupAttribute": "Thuộc tính Nhóm",
"LdapGroupAttributeTooltip": "Nhập thuộc tính đối tượng nhóm chỉ định những người dùng được bao gồm trong nhóm này.",
"LdapGroupDN": "DN Nhóm",

View File

@ -8,11 +8,11 @@
"LdapAutoSyncToggleDescription": "同步将允许从门户上传所有数据并在更改设置后更新新数据。每次门户中有新用户数据时都将进行同步。",
"LdapAvatar": "个人资料照片",
"LdapCertificateConfirm": "确认证书",
"LdapConnectionTypeSSL": "SSL",
"LdapConnectionTypeSSLTooltip": "您可以使用安全套接字层SSL使 LDAP 流量保密且安全",
"LdapConnectionTypeStartTls": "StartTLS",
"LdapConnectionTypeStartTlsTooltip": "StartTLS 提供了一种将纯文本连接升级为加密TLS 或 SSL连接的方法而不是使用单独的端口进行加密通信。",
"LdapDisclaimer": "请记住:门户用户电子邮件将从“邮件属性”设置中获取。如果缺少,则将以以下方式形成:“登录属性 + @ + LDAP 域”。如果不存在这样的电子邮件,用户将不会收到任何门户通知。",
"LdapEnableSSL": "启用 SSL",
"LdapEnableSSLTooltip": "您可以使用安全套接字层SSL使 LDAP 流量保密且安全",
"LdapEnableStartTls": "启用 StartTLS",
"LdapEnableStartTlsTooltip": "StartTLS 提供了一种将纯文本连接升级为加密TLS 或 SSL连接的方法而不是使用单独的端口进行加密通信。",
"LdapGroupAttribute": "组属性",
"LdapGroupAttributeTooltip": "输入组对象属性,该属性指定此组包含哪些用户。",
"LdapGroupDN": "组 DN",

View File

@ -174,6 +174,7 @@
"NewColorScheme": "新配色方案",
"NextStep": "下一步",
"NoEmail": "无电子邮件",
"NoEventsHereYet": "这里目前没有事件",
"NoUsersInBackup": "未找到用户。请重试或上传其他备份文件。",
"NumberOfActiveEmployees": "活跃员工数:{{count}}",
"NumberOfAttempts": "尝试次数",

View File

@ -169,13 +169,6 @@ const StyledRow = styled.div`
.warning {
margin-inline-start: auto;
}
.combo-button-label {
color: ${(props) => props.theme.accessRightSelect.descriptionColor};
}
.combo-buttons_expander-icon path {
fill: ${(props) => props.theme.text.disableColor};
}
`;
const StyledInviteInput = styled.div`
@ -322,7 +315,12 @@ const StyledDropDown = styled(DropDown)`
gap: 4px;
p {
color: ${(props) => props.theme.filesPanels.invite.addButtonColor};
color: ${(props) => props.theme.currentColorScheme.main.accent};
${(props) =>
props.isRequestRunning &&
css`
opacity: 0.65;
`}
}
svg {
@ -330,7 +328,12 @@ const StyledDropDown = styled(DropDown)`
theme.interfaceDirection === "rtl" && "transform: scaleX(-1);"};
path {
fill: ${(props) => props.theme.filesPanels.invite.addButtonColor};
fill: ${(props) => props.theme.currentColorScheme.main.accent};
${(props) =>
props.isRequestRunning &&
css`
opacity: 0.65;
`}
}
}
}

View File

@ -39,7 +39,7 @@ import { ComboBox } from "@docspace/shared/components/combobox";
import Filter from "@docspace/shared/api/people/filter";
import BetaBadge from "../../../BetaBadgeWrapper";
import { getMembersList } from "@docspace/shared/api/people";
import { getMembersList, getUserList } from "@docspace/shared/api/people";
import {
AccountsSearchArea,
EmployeeType,
@ -72,6 +72,9 @@ import ArrowIcon from "PUBLIC_DIR/images/arrow.right.react.svg";
import PaidQuotaLimitError from "SRC_DIR/components/PaidQuotaLimitError";
const minSearchValue = 2;
const filterSeparator = ";";
const regex =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
const InviteInput = ({
defaultAccess,
@ -101,21 +104,19 @@ const InviteInput = ({
const isPublicRoomType = roomType === RoomsType.PublicRoom;
const [inputValue, setInputValue] = useState("");
const [usersList, setUsersList] = useState([]);
const [invitedUsers, setInvitedUsers] = useState(new Map());
const [isChangeLangMail, setIsChangeLangMail] = useState(false);
const [isAddEmailPanelBlocked, setIsAddEmailPanelBlocked] = useState(true);
const [selectedAccess, setSelectedAccess] = useState(defaultAccess);
const [dropDownWidth, setDropDownWidth] = useState(0);
const [searchRequestRunning, setSearchRequestRunning] = useState(false);
const searchRef = useRef();
const selectedLanguage = cultureNames.find((item) => item.key === language) ||
cultureNames.find((item) => item.key === culture.key) || {
key: language,
label: "",
isBeta: isBetaLanguage(language),
};
const prevDropDownContent = useRef(null);
useEffect(() => {
setTimeout(() => {
@ -124,15 +125,53 @@ const InviteInput = ({
}, 0);
});
const selectedLanguage = useMemo(
() =>
cultureNames.find((item) => item.key === language) ||
cultureNames.find((item) => item.key === culture.key) || {
key: language,
label: "",
isBeta: isBetaLanguage(language),
},
[cultureNames, language, culture],
);
const cultureNamesNew = useMemo(
() =>
cultureNames.map((item) => ({
label: item.label,
key: item.key,
isBeta: isBetaLanguage(item.key),
})),
[cultureNames],
);
useEffect(() => {
!culture.key &&
if (!culture.key) {
setInviteLanguage({
key: language,
label: selectedLanguage.label,
isBeta: isBetaLanguage(language),
});
}
}, []);
const onLanguageSelect = (language) => {
setInviteLanguage(language);
setCultureKey(language.key);
if (language.key !== i18n.language) setIsChangeLangMail(true);
else setIsChangeLangMail(false);
};
const onResetLangMail = () => {
setInviteLanguage({
key: selectedLanguage.key,
label: selectedLanguage.label,
isBeta: selectedLanguage.isBeta,
});
setIsChangeLangMail(false);
};
const toUserItems = (query) => {
const addresses = parseAddresses(query);
const uid = () => Math.random().toString(36).slice(-6);
@ -192,38 +231,67 @@ const InviteInput = ({
}
}
return {
return [
{
email: addresses[0].email,
id: uid(),
access: userAccess,
displayName: addresses[0].email,
errors: addresses[0].parseErrors,
isEmailInvite: true,
};
},
];
};
const searchByQuery = async (value) => {
const query = value.trim();
if (query.length >= minSearchValue) {
const searchArea = isPublicRoomType
? AccountsSearchArea.People
: AccountsSearchArea.Any;
const filter = Filter.getFilterWithOutDisabledUser();
filter.search = query;
const users = await getMembersList(searchArea, roomId, filter);
setUsersList(users.items);
if (users.total) setIsAddEmailPanelBlocked(false);
}
const query = getParts(value.trim()).join(filterSeparator);
if (!query) {
setInputValue("");
setUsersList([]);
setIsAddEmailPanelBlocked(true);
setSearchRequestRunning(false);
return;
}
let isBlocked = true;
if (query.length >= minSearchValue) {
const filter = Filter.getDefault();
const searchArea = isPublicRoomType
? AccountsSearchArea.People
: AccountsSearchArea.Any;
filter.search = query;
filter.filterSeparator = filterSeparator;
const users =
roomId === -1
? await getUserList(filter)
: await getMembersList(searchArea, roomId, filter);
setUsersList(
roomId === -1
? users.items.map((value) => ({ ...value, shared: true }))
: users.items,
);
if (users.total) isBlocked = false;
}
const parts = getParts(value);
parts.forEach((part) => {
isBlocked = regex.test(part) ? false : isBlocked;
});
console.log("set here", isBlocked);
setIsAddEmailPanelBlocked(isBlocked);
setSearchRequestRunning(false);
};
const debouncedSearch = useCallback(
@ -247,22 +315,8 @@ const InviteInput = ({
return;
}
if (roomId !== -1) {
setSearchRequestRunning(true);
debouncedSearch(clearValue);
}
const regex =
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{0,}))$/g;
const parts = getParts(value);
for (let i = 0; i < parts.length; i += 1) {
if (regex.test(parts[i])) {
setIsAddEmailPanelBlocked(false);
return;
}
}
setIsAddEmailPanelBlocked(true);
};
const removeExist = (items) => {
@ -360,12 +414,62 @@ const InviteInput = ({
};
const addEmail = () => {
if (!inputValue.trim()) return;
if (!inputValue.trim() || searchRequestRunning) return;
const items = toUserItems(inputValue);
const newItems =
items.length > 1 ? [...items, ...inviteItems] : [items, ...inviteItems];
const filteredItems = items
.filter(
(item) =>
!usersList.find((value) => value.email === item.email)?.shared,
)
.map((item) => {
const userItem = usersList.find((value) => value.email === item.email);
if (userItem) {
if (userItem.isOwner || userItem.isAdmin)
userItem.access = ShareAccessRights.RoomManager;
if (userItem.isGroup && checkIfAccessPaid(userItem.access)) {
const topFreeRole = getTopFreeRole(t, roomType);
userItem.access = topFreeRole.access;
userItem.warning = t("GroupMaxAvailableRoleWarning", {
roleName: topFreeRole.label,
});
}
if (
isUserTariffLimit &&
userItem.isVisitor &&
isPaidUserRole(item.access)
) {
const freeRole = getTopFreeRole(t, roomType)?.access;
if (freeRole) {
userItem.access = freeRole;
toastr.error(<PaidQuotaLimitError />);
}
}
return userItem;
}
return item;
});
if (filteredItems.length !== items.length) {
toastr.warning(t("UsersAlreadyAdded"));
}
if (!filteredItems.length) {
setInputValue("");
setIsAddEmailPanelBlocked(true);
setUsersList([]);
return;
}
const newItems = [...filteredItems, ...inviteItems];
const filtered = removeExist(newItems);
@ -420,9 +524,19 @@ const InviteInput = ({
setAddUsersPanelVisible(false);
};
const foundUsers = usersList.map((user) => getItemContent(user));
const dropDownContent = useMemo(() => {
const partsLength = getParts(inputValue).length;
const addEmailPanel = (
if (searchRequestRunning && prevDropDownContent.current) {
return prevDropDownContent.current;
}
if (partsLength === 1 && !!usersList.length) {
prevDropDownContent.current = usersList.map((user) =>
getItemContent(user),
);
} else {
prevDropDownContent.current = (
<DropDownItem
className="list-item"
style={{ width: "inherit" }}
@ -435,7 +549,7 @@ const InviteInput = ({
<Text truncate fontSize="14px" fontWeight={600}>
{inputValue}
</Text>
</div>
</div>{" "}
<div className="email-list_add-button">
<Text fontSize="13px" fontWeight={600}>
{t("Common:AddButton")}
@ -444,6 +558,9 @@ const InviteInput = ({
</div>
</DropDownItem>
);
}
return prevDropDownContent.current;
}, [usersList, inputValue]);
const accessOptions = getAccessOptions(
t,
@ -479,30 +596,18 @@ const InviteInput = ({
document.addEventListener("keyup", onKeyPress);
return () => document.removeEventListener("keyup", onKeyPress);
});
const onLanguageSelect = (language) => {
setInviteLanguage(language);
setCultureKey(language.key);
if (language.key !== i18n.language) setIsChangeLangMail(true);
else setIsChangeLangMail(false);
};
const onResetLangMail = () => {
setInviteLanguage({
key: selectedLanguage.key,
label: selectedLanguage.label,
isBeta: selectedLanguage.isBeta,
});
setIsChangeLangMail(false);
};
const cultureNamesNew = cultureNames.map((item) => ({
label: item.label,
key: item.key,
isBeta: isBetaLanguage(item.key),
}));
useEffect(() => {
const newInviteItems = new Map();
const invitedUsers = useMemo(
() => inviteItems.map((item) => item.id),
[inviteItems],
inviteItems.forEach((item) => newInviteItems.set(item?.id, item));
setInvitedUsers((value) => new Map([...value, ...newInviteItems]));
}, [inviteItems]);
const invitedUsersArray = useMemo(
() => Array.from(invitedUsers.keys()),
[invitedUsers],
);
return (
@ -614,8 +719,9 @@ const InviteInput = ({
withBackdrop={false}
zIndex={399}
{...dropDownMaxHeight}
isRequestRunning={searchRequestRunning}
>
{!!usersList.length ? foundUsers : addEmailPanel}
{dropDownContent}
</StyledDropDown>
)}
@ -650,7 +756,7 @@ const InviteInput = ({
roomId={roomId}
withGroups={!isPublicRoomType}
withAccessRights
invitedUsers={invitedUsers}
invitedUsers={invitedUsersArray}
disableDisabledUsers
/>
)}

View File

@ -23,18 +23,22 @@
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import debounce from "lodash.debounce";
import InfoEditReactSvgUrl from "PUBLIC_DIR/images/info.edit.react.svg?url";
import AtReactSvgUrl from "PUBLIC_DIR/images/@.react.svg?url";
import AlertSvgUrl from "PUBLIC_DIR/images/icons/12/alert.react.svg?url";
import React, { useState, useEffect } from "react";
import React, { useState, useEffect, useCallback } from "react";
import { inject, observer } from "mobx-react";
import { Avatar } from "@docspace/shared/components/avatar";
import { Text } from "@docspace/shared/components/text";
import { parseAddresses } from "@docspace/shared/utils";
import { getUserTypeLabel } from "@docspace/shared/utils/common";
import { getMembersList, getUserList } from "@docspace/shared/api/people";
import { AccountsSearchArea, RoomsType } from "@docspace/shared/enums";
import { toastr } from "@docspace/shared/components/toast";
import {
getAccessOptions,
@ -55,6 +59,7 @@ import { filterGroupRoleOptions, filterUserRoleOptions } from "SRC_DIR/helpers";
import AccessSelector from "../../../AccessSelector";
import PaidQuotaLimitError from "SRC_DIR/components/PaidQuotaLimitError";
import Filter from "@docspace/shared/api/people/filter";
const Item = ({
t,
@ -101,6 +106,44 @@ const Item = ({
const [inputValue, setInputValue] = useState(name);
const [parseErrors, setParseErrors] = useState(errors);
const [searchRequestRunning, setSearchRequestRunning] = useState(false);
const [isSharedUser, setIsSharedUser] = useState(false);
const searchByQuery = async (value) => {
if (!value) {
setSearchRequestRunning(false);
setIsSharedUser(false);
return;
}
const isPublicRoomType = roomType === RoomsType.PublicRoom;
const filter = Filter.getDefault();
const searchArea = isPublicRoomType
? AccountsSearchArea.People
: AccountsSearchArea.Any;
filter.search = value;
const users =
roomId === -1
? await getUserList(filter)
: await getMembersList(searchArea, roomId, filter);
setSearchRequestRunning(false);
const user = users.items.find((item) => item.email === value);
setIsSharedUser(user && (roomId === -1 || user?.shared));
};
const debouncedSearch = useCallback(
debounce((value) => searchByQuery(value), 300),
[],
);
const accesses = getAccessOptions(
t,
roomType,
@ -148,9 +191,17 @@ const Item = ({
const cancelEdit = (e) => {
setInputValue(name);
setEdit(false);
setSearchRequestRunning(false);
setIsSharedUser(false);
};
const saveEdit = (e) => {
const saveEdit = async (e) => {
if (searchRequestRunning) return;
if (isSharedUser) {
return toastr.warning(t("UsersAlreadyAdded"));
}
const value = inputValue === "" ? name : inputValue;
setEdit(false);
@ -185,6 +236,10 @@ const Item = ({
const value = e.target.value.trim();
setInputValue(value);
setSearchRequestRunning(true);
debouncedSearch(value);
};
const hasError = parseErrors && !!parseErrors.length;
@ -285,7 +340,11 @@ const Item = ({
const editBody = (
<>
<StyledEditInput value={inputValue} onChange={changeValue} />
<StyledEditButton icon={okIcon} onClick={saveEdit} />
<StyledEditButton
icon={okIcon}
onClick={saveEdit}
isDisabled={searchRequestRunning}
/>
<StyledEditButton icon={cancelIcon} onClick={cancelEdit} />
</>
);

View File

@ -397,7 +397,6 @@ const PeopleTableRow = (props) => {
size="content"
modernView
manualWidth={"fit-content"}
isLoading={isLoading}
optionStyle={{ maxWidth: "400px" }}
textOverflow
/>

View File

@ -36,6 +36,10 @@ const StyledLdapPage = styled(Box)`
color: ${(props) => props.theme.client.settings.common.descriptionColor};
}
.ldap-disclaimer {
font-size: 12px;
}
.toggle {
position: static;
margin-top: 1px;
@ -65,10 +69,13 @@ const StyledLdapPage = styled(Box)`
}
.ldap_checkbox-container {
margin: 20px 0;
margin: 20px 0 20px 0;
.ldap_radio_buttons_group {
display: grid;
grid-template-rows: 1fr 1fr;
grid-gap: 12px;
grid-gap: 6px;
margin-top: 12px;
.ldap_checkbox-header {
display: flex;
@ -80,6 +87,7 @@ const StyledLdapPage = styled(Box)`
}
}
}
}
.ldap_connection-container {
margin: 20px 0 28px;
@ -157,6 +165,7 @@ const StyledLdapPage = styled(Box)`
`}
}
.ldap_connection_type-text,
.ldap_attribute-mapping-text {
display: flex;
align-items: baseline;

View File

@ -26,9 +26,17 @@
import { inject, observer } from "mobx-react";
import { useTranslation } from "react-i18next";
import { Checkbox } from "@docspace/shared/components/checkbox";
import { Box } from "@docspace/shared/components/box";
import { HelpButton } from "@docspace/shared/components/help-button";
import { RadioButton } from "@docspace/shared/components/radio-button";
import { Text } from "@docspace/shared/components/text";
const ConnectionType = Object.freeze({
Unencrypted: 1,
StartTls: 2,
SSL: 3,
});
const Checkboxes = ({
isTlsEnabled,
@ -41,6 +49,12 @@ const Checkboxes = ({
}) => {
const { t } = useTranslation("Ldap");
const onChangeUnencrypted = (e) => {
const checked = e.target.checked;
isTlsEnabled && checked && setIsTlsEnabled(false);
isSslEnabled && checked && setIsSslEnabled(false);
};
const onChangeTls = (e) => {
const checked = e.target.checked;
isSslEnabled && checked && setIsSslEnabled(false);
@ -55,27 +69,50 @@ const Checkboxes = ({
return (
<Box className="ldap_checkbox-container">
<div className="ldap_connection_type-text">
<Text fontWeight={600} fontSize={"14px"}>
{t("LdapConnectionType")}
</Text>
</div>
<div className="ldap_radio_buttons_group">
<div className="ldap_checkbox-header">
<Checkbox
<RadioButton
id="ldap-connection-type"
tabIndex={1}
className="ldap_checkbox-starttls"
key={ConnectionType.Unencrypted}
value={ConnectionType.Unencrypted}
isChecked={!isTlsEnabled && !isSslEnabled}
onChange={onChangeUnencrypted}
isDisabled={!isLdapEnabled || isUIDisabled}
label={t("LdapEnableStartTls")}
isChecked={isTlsEnabled}
onChange={onChangeTls}
label={t("LdapConnectionTypeUnencrypted")}
/>
<HelpButton tooltipContent={t("LdapEnableStartTlsTooltip")} />
</div>
<div className="ldap_checkbox-header">
<Checkbox
<RadioButton
id="ldap-connection-type"
tabIndex={2}
className="ldap_checkbox-ssl"
key={ConnectionType.StartTls}
value={ConnectionType.StartTls}
isChecked={isTlsEnabled}
onChange={onChangeTls}
isDisabled={!isLdapEnabled || isUIDisabled}
label={t("LdapEnableSSL")}
label={t("LdapConnectionTypeStartTls")}
/>
<HelpButton tooltipContent={t("LdapConnectionTypeStartTlsTooltip")} />
</div>
<div className="ldap_checkbox-header">
<RadioButton
id="ldap-connection-type"
tabIndex={3}
key={ConnectionType.SSL}
value={ConnectionType.SSL}
isChecked={isSslEnabled}
onChange={onChangeSsl}
isDisabled={!isLdapEnabled || isUIDisabled}
label={t("LdapConnectionTypeSSL")}
/>
<HelpButton tooltipContent={t("LdapEnableSSLTooltip")} />
<HelpButton tooltipContent={t("LdapConnectionTypeSSLTooltip")} />
</div>
</div>
</Box>
);

View File

@ -35,7 +35,7 @@ const HideButton = (props) => {
const { t } = useTranslation("SingleSignOn");
const { text, label, isAdditionalParameters, value, setIsSettingsShown } =
props;
const marginProp = isAdditionalParameters ? null : "24px 0";
const marginProp = isAdditionalParameters ? null : "24px 0 8px 0px";
const onClick = () => {
setIsSettingsShown(!value);

View File

@ -0,0 +1,143 @@
// (c) Copyright Ascensio System SIA 2009-2024
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import styled from "styled-components";
import { RectangleSkeleton } from "@docspace/shared/skeletons";
import { tablet, mobile } from "@docspace/shared/utils";
const StyledLoader = styled.div`
.header {
height: 30px;
margin-bottom: 8px;
max-width: 700px;
@media ${mobile} {
height: 60px;
}
}
.second-container {
margin: 16px 0;
display: grid;
gap: 8px;
max-width: 350px;
}
.second-header {
max-width: 132px;
display: block;
@media ${mobile} {
max-width: 100%;
}
}
.description {
margin-top: 16px;
max-width: 645px;
}
.third-container {
margin: 16px 0;
display: flex;
justify-content: space-between;
grid-template-columns: repeat(3, 1fr);
max-width: 700px;
@media ${tablet} {
display: none;
}
}
.fourth-container {
display: grid;
gap: 4px;
margin-top: 16px;
.rows-header {
max-width: 197px;
display: none;
@media ${tablet} {
display: block;
}
}
.rows {
max-width: 700px;
display: block;
margin-bottom: 8px;
}
}
.button {
margin-top: 32px;
max-width: 163px;
}
`;
const AuditTrailLoader = () => {
return (
<StyledLoader>
<RectangleSkeleton className="header" height="100%" />
<RectangleSkeleton className="header" height="100%" />
<div className="second-container">
<RectangleSkeleton height="20px" width="94px" />
<RectangleSkeleton height="32px" />
</div>
<RectangleSkeleton className="second-header" height="32px" />
<RectangleSkeleton className="description" height="40px" />
<div className="third-container">
<RectangleSkeleton height="16px" width="28px" />
<RectangleSkeleton height="16px" width="28px" />
<RectangleSkeleton height="16px" width="28px" />
</div>
<div className="fourth-container">
<RectangleSkeleton height="16px" className="rows-header" />
<RectangleSkeleton height="20px" className="rows" />
</div>
<div className="fourth-container">
<RectangleSkeleton height="16px" className="rows-header" />
<RectangleSkeleton height="20px" className="rows" />
</div>
<div className="fourth-container">
<RectangleSkeleton height="16px" className="rows-header" />
<RectangleSkeleton height="20px" className="rows" />
</div>
<div className="fourth-container">
<RectangleSkeleton height="16px" className="rows-header" />
<RectangleSkeleton height="20px" className="rows" />
</div>
<div className="fourth-container">
<RectangleSkeleton height="16px" className="rows-header" />
<RectangleSkeleton height="20px" className="rows" />
</div>
<RectangleSkeleton height="32px" className="button" />
</StyledLoader>
);
};
export default AuditTrailLoader;

View File

@ -24,15 +24,23 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import React, { useEffect } from "react";
import React, { useEffect, useState } from "react";
import { withTranslation } from "react-i18next";
import { setDocumentTitle } from "SRC_DIR/helpers/utils";
import { inject } from "mobx-react";
import { Consumer } from "@docspace/shared/utils";
import { EmptyScreenContainer } from "@docspace/shared/components/empty-screen-container";
import { Table } from "./TableView/TableView";
import AuditRowContainer from "./RowView/AuditRowContainer";
import HistoryMainContent from "../sub-components/HistoryMainContent";
import EmptyScreenRecentUrl from "PUBLIC_DIR/images/empty_screen_recent.svg?url";
import EmptyScreenRecentDarkUrl from "PUBLIC_DIR/images/empty_screen_recent_dark.svg?url";
import AuditTrailLoader from "./AuditTrailLoader";
let timerId = null;
const AuditTrail = (props) => {
const {
t,
@ -48,11 +56,24 @@ const AuditTrail = (props) => {
isLoadingDownloadReport,
} = props;
const [isLoading, setIsLoading] = useState(!auditTrailUsers.length);
const [isShowLoader, setIShowLoader] = useState(false);
const initAudit = async () => {
timerId = setTimeout(() => {
if (!auditTrailUsers.length) setIShowLoader(true);
}, 500);
await getAuditTrail();
clearTimeout(timerId);
timerId = null;
setIShowLoader(false);
setIsLoading(false);
};
useEffect(() => {
setDocumentTitle(t("AuditTrailNav"));
getAuditTrail();
initAudit();
getLifetimeAuditSettings();
}, []);
@ -83,6 +104,27 @@ const AuditTrail = (props) => {
</div>
);
};
if (isShowLoader) {
return <AuditTrailLoader />;
}
if (isLoading) return <></>;
if (auditTrailUsers.length === 0) {
return (
<EmptyScreenContainer
descriptionText={t("AuditSubheader", {
productName: t("Common:ProductName"),
})}
imageSrc={
theme.isBase ? EmptyScreenRecentUrl : EmptyScreenRecentDarkUrl
}
headerText={t("NoEventsHereYet")}
/>
);
}
return (
<>
{securityLifetime && securityLifetime.auditTrailLifeTime && (

View File

@ -53,9 +53,9 @@ const Sdk = ({
user,
updateProfileCulture,
getRoomsIcon,
fetchExternalLinks,
getFilePrimaryLink,
getFilesSettings,
getPrimaryLink,
}) => {
const [isDataReady, setIsDataReady] = useState(false);
@ -200,20 +200,11 @@ const Sdk = ({
(data[0].roomType === RoomsType.CustomRoom && data[0].shared) ||
(data[0].roomType === RoomsType.FormRoom && data[0].shared)
) {
const links = await fetchExternalLinks(data[0].id);
const link = await getPrimaryLink(data[0].id);
const requestTokens = links.map((link) => {
const { id, title, requestToken, primary } = link.sharedTo;
return {
id,
primary,
title,
requestToken,
};
});
data[0].requestTokens = requestTokens;
data[0].requestTokens = [{ id, primary, title, requestToken }];
}
frameCallEvent({ event: "onSelectCallback", data });
@ -321,7 +312,6 @@ export const Component = inject(
settingsStore,
filesSettingsStore,
peopleStore,
publicRoomStore,
userStore,
filesStore,
}) => {
@ -331,8 +321,7 @@ export const Component = inject(
const { loadCurrentUser, user } = userStore;
const { updateProfileCulture } = peopleStore.targetUserStore;
const { getIcon, getRoomsIcon, getFilesSettings } = filesSettingsStore;
const { fetchExternalLinks } = publicRoomStore;
const { getFilePrimaryLink } = filesStore;
const { getFilePrimaryLink, getPrimaryLink } = filesStore;
return {
theme,
@ -347,9 +336,9 @@ export const Component = inject(
isLoaded,
updateProfileCulture,
user,
fetchExternalLinks,
getFilePrimaryLink,
getFilesSettings,
getPrimaryLink,
};
},
)(

View File

@ -40,6 +40,7 @@ const DEFAULT_PAYMENTS = null;
const DEFAULT_ACCOUNT_LOGIN_TYPE = null;
const DEFAULT_WITHOUT_GROUP = false;
const DEFAULT_QUOTA_FILTER = null;
const DEFAULT_FILTER_SEPARATOR = null;
const ACTIVE_EMPLOYEE_STATUS = 1;
@ -56,6 +57,7 @@ const PAYMENTS = "payments";
const ACCOUNT_LOGIN_TYPE = "accountLoginType";
const WITHOUT_GROUP = "withoutGroup";
const QUOTA_FILTER = "quotaFilter";
const FILTER_SEPARATOR = "filterSeparator";
class Filter {
static getDefault(total = DEFAULT_TOTAL) {
@ -145,6 +147,7 @@ class Filter {
accountLoginType = DEFAULT_ACCOUNT_LOGIN_TYPE,
withoutGroup = DEFAULT_WITHOUT_GROUP,
quotaFilter = DEFAULT_QUOTA_FILTER,
filterSeparator = DEFAULT_FILTER_SEPARATOR,
) {
this.page = page;
this.pageCount = pageCount;
@ -160,6 +163,7 @@ class Filter {
this.accountLoginType = accountLoginType;
this.withoutGroup = withoutGroup;
this.quotaFilter = quotaFilter;
this.filterSeparator = filterSeparator;
}
getStartIndex = () => {
@ -188,6 +192,7 @@ class Filter {
accountLoginType,
withoutGroup,
quotaFilter,
filterSeparator,
} = this;
let employeetype = null;
@ -212,6 +217,7 @@ class Filter {
accountLoginType,
withoutGroup,
quotaFilter,
filterSeparator,
};
dtoFilter = { ...dtoFilter, ...employeetype };
@ -235,6 +241,7 @@ class Filter {
accountLoginType,
withoutGroup,
quotaFilter,
filterSeparator,
} = this;
const dtoFilter = {};
@ -269,6 +276,8 @@ class Filter {
if (quotaFilter) dtoFilter[QUOTA_FILTER] = quotaFilter;
if (filterSeparator) dtoFilter[FILTER_SEPARATOR] = filterSeparator;
dtoFilter[PAGE] = page + 1;
dtoFilter[SORT_BY] = sortBy;
dtoFilter[SORT_ORDER] = sortOrder;
@ -304,6 +313,7 @@ class Filter {
this.accountLoginType,
this.withoutGroup,
this.quotaFilter,
this.filterSeparator,
);
}
@ -323,6 +333,7 @@ class Filter {
null,
null,
false,
null,
);
}
@ -342,7 +353,8 @@ class Filter {
this.pageCount === filter.pageCount &&
this.payments === filter.payments &&
this.accountLoginType === filter.accountLoginType &&
this.withoutGroup === filter.withoutGroup;
this.withoutGroup === filter.withoutGroup &&
this.filterSeparator === filter.filterSeparator;
return equals;
}

View File

@ -100,8 +100,6 @@ const StyledDropdown = styled.div<{
-moz-box-shadow: ${(props) => props.theme.dropDown.boxShadow};
-webkit-box-shadow: ${(props) => props.theme.dropDown.boxShadow};
padding: ${(props) =>
!props.maxHeight && props.itemCount && props.itemCount > 1 && `4px 0px`};
${(props) =>
props.columnCount &&
`

View File

@ -180,7 +180,7 @@ const PasswordInput = React.forwardRef<PasswordInputHandle, PasswordInputProps>(
[onKeyDown],
);
const changeInputType = () => {
const changeInputType = React.useCallback(() => {
const newType =
state.type === InputType.text ? InputType.password : InputType.text;
@ -188,7 +188,13 @@ const PasswordInput = React.forwardRef<PasswordInputHandle, PasswordInputProps>(
...s,
type: newType,
}));
};
}, [state.type]);
React.useEffect(() => {
if (isDisabled && state.type === InputType.text) {
changeInputType();
}
}, [isDisabled, changeInputType, state.type]);
const testStrength = useCallback(
(value: string) => {

View File

@ -241,10 +241,14 @@ class AxiosClient {
if (!this.isSSR) {
switch (error.response?.status) {
case 401: {
if (options.skipUnauthorized || window?.ClientConfig?.isFrame)
return Promise.resolve();
if (options.skipUnauthorized) return Promise.resolve();
if (options.skipLogout) return Promise.reject(error);
if (window?.ClientConfig?.isFrame) {
break;
}
const opt: AxiosRequestConfig = {
method: "POST",
url: "/authentication/logout",
@ -286,6 +290,7 @@ class AxiosClient {
return Promise.reject(error);
}
switch (error.response?.status) {
case 401:
return Promise.resolve();