diff --git a/.eslintrc.json b/.eslintrc.json index 5b431ff2740..45a9d063a98 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -90,22 +90,21 @@ "error", { "zones": [ - // Do not allow angular/node code to be imported into common { + // avoid specific frameworks or large dependencies in common "target": "./libs/common/**/*", - "from": "./libs/angular/**/*" - }, - { - "target": "./libs/common/**/*", - "from": "./libs/node/**/*" - }, - { - "target": "./libs/common/**/*", - "from": "./libs/importer/**/*" - }, - { - "target": "./libs/common/**/*", - "from": "./libs/exporter/**/*" + "from": [ + // Angular + "./libs/angular/**/*", + "./node_modules/@angular*/**/*", + + // Node + "./libs/node/**/*", + + // Import/export + "./libs/importer/**/*", + "./libs/exporter/**/*" + ] } ] } diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a954236cdf7..d0526b1a79e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -31,7 +31,6 @@ libs/exporter @bitwarden/team-tools-dev libs/importer @bitwarden/team-tools-dev ## Vault team files ## -apps/browser/src/autofill @bitwarden/team-vault-dev apps/browser/src/vault @bitwarden/team-vault-dev apps/cli/src/vault @bitwarden/team-vault-dev apps/desktop/src/vault @bitwarden/team-vault-dev @@ -69,6 +68,9 @@ apps/web/src/app/core @bitwarden/team-platform-dev apps/web/src/app/shared @bitwarden/team-platform-dev apps/web/src/translation-constants.ts @bitwarden/team-platform-dev +## Client Integrations team files ## +apps/browser/src/autofill @bitwarden/team-client-integrations-dev + ## Component Library ## libs/components @bitwarden/team-platform-dev diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index ee8d689c219..fd4a700131f 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -80,12 +80,10 @@ jobs: npm_command: "dist:bit:selfhost" - name: "cloud-QA" npm_command: "build:bit:qa" - - name: "cloud-POC2" - npm_command: "build:bit:poc" - name: "ee" npm_command: "build:bit:ee" - - name: "eudevtest" - npm_command: "build:bit:eudevtest" + - name: "cloud-euprd" + npm_command: "build:bit:euprd" steps: - name: Checkout repo diff --git a/.github/workflows/deploy-prod-web.yml b/.github/workflows/deploy-prod-web.yml new file mode 100644 index 00000000000..144b23e390b --- /dev/null +++ b/.github/workflows/deploy-prod-web.yml @@ -0,0 +1,13 @@ +--- +name: Deploy Web - EU Prod - STUB + +on: + workflow_dispatch: + +jobs: + stub-job: + name: Stub Job + runs-on: ubuntu-22.04 + steps: + - name: Stub Step + run: exit 0 diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index 71cd3d1a66b..077e0623e4d 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -1412,13 +1412,13 @@ "message": "استنساخ" }, "passwordGeneratorPolicyInEffect": { - "message": "One or more organization policies are affecting your generator settings." + "message": "واحدة أو أكثر من سياسات المؤسسة تؤثر على إعدادات المولدات الخاصة بك." }, "vaultTimeoutAction": { - "message": "Vault timeout action" + "message": "إجراء مهلة المخزن" }, "lock": { - "message": "Lock", + "message": "قفل", "description": "Verb form: to make secure or inaccesible by" }, "trash": { @@ -1426,7 +1426,7 @@ "description": "Noun: a special folder to hold deleted items" }, "searchTrash": { - "message": "Search trash" + "message": "البحث عن سلة المهملات" }, "permanentlyDeleteItem": { "message": "حذف العنصر بشكل دائم" @@ -1435,13 +1435,13 @@ "message": "هل أنت متأكد من أنك تريد حذف هذا العنصر بشكل دائم؟" }, "permanentlyDeletedItem": { - "message": "Item permanently deleted" + "message": "تم حذف العنصر بشكل دائم" }, "restoreItem": { "message": "استعادة العنصر" }, "restoreItemConfirmation": { - "message": "Are you sure you want to restore this item?" + "message": "هل أنت متأكد من أنك تريد استعادة هذا العنصر؟" }, "restoredItem": { "message": "Item restored" @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index 0c12f845d51..c062ebbc291 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -1462,16 +1462,16 @@ "message": "Element avto-dolduruldu" }, "insecurePageWarning": { - "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page." + "message": "Xəbərdarlıq: Bu, güvənli olmayan bir HTTP səhifəsidir və göndərdiyiniz istənilən məlumat başqaları tərəfindən görünə və dəyişdirilə bilər. Bu Giriş, orijinal olaraq güvənli (HTTPS) bir səhifədə saxlanılmışdır." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Hələ də bu girişi doldurmaq istəyirsiniz?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Form sahibliyi, saxlanılmış girişinizin URI-ından fərqli bir domen tərəfindən həyata keçirilir. Yenə də avto-doldurmaq üçün \"Oldu\"ya, dayandırmaq üçün \"İmtina\"ya basın." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Gələcəkdə bu xəbərdarlığın qarşısını almaq üçün, $HOSTNAME$ URI-nı bu sayt üçün Bitwarden giriş elementinizdə saxlayın.", "placeholders": { "hostname": { "content": "$1", @@ -2234,5 +2234,8 @@ "us": { "message": "ABŞ", "description": "United States" + }, + "accessDenied": { + "message": "Müraciət rədd edildi. Bu səhifəyə baxmaq üçün icazəniz yoxdur." } } diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 80800f4aa38..b44b55578f4 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -1462,16 +1462,16 @@ "message": "Аўтазапоўнены элемент" }, "insecurePageWarning": { - "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page." + "message": "Папярэджанне: гэта старонка HTTP не абаронена. Любая інфармацыя, якую вы адпраўляеце тэарэтычна можа перахоплена і зменена любым карыстальнікам. Гэты лагін першапачаткова захаваны на абароненай старонцы (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Вы ўсё яшчэ хочаце запоўніць гэты лагін?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "Форма размешчана на іншым дамене, які адрозніваецца ад URI вашага захаванага лагіна. Націсніце \"Добра\", каб усё роўна запоўніць або \"Скасаваць\" для спынення." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Каб больш не атрымліваць гэта папярэджанне, захавайце гэты URI, $HOSTNAME$ у свае элементы ўваходу Bitwarden для гэтага сайта.", "placeholders": { "hostname": { "content": "$1", @@ -2222,17 +2222,20 @@ } }, "region": { - "message": "Region" + "message": "Рэгіён" }, "opensInANewWindow": { "message": "Адкрываць у новым акне" }, "eu": { - "message": "EU", + "message": "ЕС", "description": "European Union" }, "us": { - "message": "US", + "message": "ЗША", "description": "United States" + }, + "accessDenied": { + "message": "Доступ забаронены. У вас не дастаткова правоў для прагляду гэтай старонкі." } } diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index b17692bc83b..4cf4a4bf727 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "САЩ", "description": "United States" + }, + "accessDenied": { + "message": "Достъпът е отказан. Нямате право за преглед на тази страница." } } diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index 76143e7619a..ba9e128f4c5 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index b3047a98789..2625f7d878a 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index 91bbfdb48b4..836917f18f1 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "EUA", "description": "United States" + }, + "accessDenied": { + "message": "Accés denegat. No teniu permís per veure aquesta pàgina." } } diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index d83282e08a4..8201b3fd718 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Přístup byl odepřen. Nemáte oprávnění k zobrazení této stránky." } } diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/cy/messages.json +++ b/apps/browser/src/_locales/cy/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 5aebf5dd80d..2fefddc1729 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "USA", "description": "United States" + }, + "accessDenied": { + "message": "Adgang nægtet. Nødvendig tilladelse til at se siden mangler." } } diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index c7827d4ddc4..fe219f04466 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Zugriff verweigert. Du hast keine Berechtigung, diese Seite anzuzeigen." } } diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 4f85e42e08f..e06dd29f85c 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Δεν επιτρέπεται η πρόσβαση. Δεν έχετε άδεια για να δείτε αυτή τη σελίδα." } } diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index 653ff32074c..75e82d8d2fc 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index 3fe6222cfcf..3602873c75b 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index afd3ea4ce87..6e7e19c3ed6 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "EE.UU.", "description": "United States" + }, + "accessDenied": { + "message": "Acceso denegado. No tiene permiso para ver esta página." } } diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index 02ee8d04384..7bf0ad7c5ee 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -1462,16 +1462,16 @@ "message": "Kirje täideti" }, "insecurePageWarning": { - "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page." + "message": "Hoiatus: See on ebaturvaline HTTP lehekülg. Teised osapooled võivad sinu sisestatud infot potentsiaalselt näha ja muuta. Algselt oli see kirje salvestatud turvalise (HTTPS) lehe jaoks." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Soovid kirje automaattäita?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "See vorm on majutatud teistsugusel domeenil kui sinu salvestatud URI. Vajuta OK, et automaattäita või Tühista, et täitmine peatada." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Selleks, et antud teavitust edaspidi ei kuvataks, salvesta see URI $HOSTNAME$ Bitwardeni kirjesse.", "placeholders": { "hostname": { "content": "$1", @@ -2234,5 +2234,8 @@ "us": { "message": "USA", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index e2189ce6a68..d98e30bc571 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 0e4a59e164b..8aa803a223f 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 69b77b26123..68c680c70ec 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Pääsy estetty. Sinulla ei ole oikeutta avata sivua." } } diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index e98884c2007..6e0c2903ec0 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index 8f4e769c695..163de06453b 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Accès refusé. Vous n'avez pas l'autorisation de voir cette page." } } diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/gl/messages.json +++ b/apps/browser/src/_locales/gl/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index fc90bade6c0..b4a1489a6f9 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index df561ad0e47..67cec2d36f8 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index 37ecb3de8c8..252b07461a9 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index c5e8214b635..3c56ed48ef2 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "A hozzáférés megtagadásra került. Nincs jogosultság az oldal megtekintésére." } } diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 6addc264fb2..95ba7f3387c 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 1971331fd98..3c61dc67f63 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Accesso negato. Non hai i permessi necessari per visualizzare questa pagina." } } diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 630dfb3e217..5955d141447 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "米国", "description": "United States" + }, + "accessDenied": { + "message": "アクセスが拒否されました。このページを表示する権限がありません。" } } diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 2f484324f39..77d24a674b4 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index baa61fad177..25656d0fbb9 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index 962fe7347cf..5496e489386 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index e6a9dbdc5c6..1b9a21bd039 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -596,13 +596,13 @@ "message": "Rodyti korteles skirtuko puslapyje" }, "showCardsCurrentTabDesc": { - "message": "List card items on the Tab page for easy auto-fill." + "message": "Pateikti kortelių elementų skirtuko puslapyje sąrašą, kad būtų lengva automatiškai užpildyti." }, "showIdentitiesCurrentTab": { - "message": "Show identities on Tab page" + "message": "Rodyti tapatybes skirtuko puslapyje" }, "showIdentitiesCurrentTabDesc": { - "message": "List identity items on the Tab page for easy auto-fill." + "message": "Pateikti tapatybės elementų skirtuko puslapyje, kad būtų lengva automatiškai užpildyti." }, "clearClipboard": { "message": "Išvalyti iškarpinę", @@ -829,7 +829,7 @@ "message": "Kopijuoti vienkartinį kodą (TOTP) automatiškai" }, "disableAutoTotpCopyDesc": { - "message": "If a login has an authenticator key, copy the TOTP verification code to your clip-board when you auto-fill the login." + "message": "Jei prisijungimas turi autentifikatoriaus raktą, nukopijuokite TOTP tikrinimo kodą į iškarpinę, kai automatiškai užpildysite prisijungimą." }, "enableAutoBiometricsPrompt": { "message": "Paleidžiant patvirtinti biometrinius duomenis" @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 38c892aaede..6a274fd349b 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "ASV", "description": "United States" + }, + "accessDenied": { + "message": "Piekļuve liegta. Nav nepieciešamo atļauju, lai skatītu šo lapu." } } diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index 4c4e9936e0f..052e05cacd4 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/my/messages.json +++ b/apps/browser/src/_locales/my/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 8ede2fb9389..f8958da337c 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/ne/messages.json +++ b/apps/browser/src/_locales/ne/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index 68a6ba26b1f..4a6dbb73fbc 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Toegang geweigerd. Je hebt geen toestemming om deze pagina te bekijken." } } diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/or/messages.json +++ b/apps/browser/src/_locales/or/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index de2c505ced3..71b307728f5 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Odmowa dostępu. Nie masz uprawnień do przeglądania tej strony." } } diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index 87585d561d0..6b53aa165cb 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -202,7 +202,7 @@ "message": "Explore os fóruns da comunidade" }, "contactSupport": { - "message": "Contact Bitwarden support" + "message": "Contate o suporte Bitwarden" }, "sync": { "message": "Sincronizar" @@ -1489,7 +1489,7 @@ "message": "New master password" }, "confirmNewMasterPass": { - "message": "Confirm new master password" + "message": "Confirme a nova senha mestre" }, "masterPasswordPolicyInEffect": { "message": "Uma ou mais políticas da organização exigem que a sua senha mestra cumpra aos seguintes requisitos:" @@ -2189,7 +2189,7 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Selecione um item desta página ou defina um atalho nas configurações." }, "gotIt": { "message": "Entendi" @@ -2222,10 +2222,10 @@ } }, "region": { - "message": "Region" + "message": "Região" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Abrir em uma nova janela" }, "eu": { "message": "EU", @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Acesso negado. Você não tem permissão para ver esta página." } } diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index abb193ecbab..164a036d691 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -98,19 +98,19 @@ "message": "Copiar nome do campo personalizado" }, "noMatchingLogins": { - "message": "Sem inícios de sessão correspondentes" + "message": "Sem credenciais correspondentes" }, "unlockVaultMenu": { - "message": "Desbloqueie o seu cofre" + "message": "Desbloquear o cofre" }, "loginToVaultMenu": { "message": "Inicie sessão para abrir o seu cofre" }, "autoFillInfo": { - "message": "Não existem inícios de sessão disponíveis para preenchimento automático no separador atual do navegador." + "message": "Não existem credenciais disponíveis para preenchimento automático no separador atual do navegador." }, "addLogin": { - "message": "Adicionar um início de sessão" + "message": "Adicionar uma credencial" }, "addItem": { "message": "Adicionar item" @@ -153,7 +153,7 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { - "message": "Frase da impressão digital da sua conta", + "message": "Frase de impressão digital da sua conta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "twoStepLogin": { @@ -221,10 +221,10 @@ "description": "Short for 'Password Generator'." }, "passGenInfo": { - "message": "Gera automaticamente palavras-passe fortes e únicas para os seus inícios de sessão." + "message": "Gera automaticamente palavras-passe fortes e únicas para as suas credenciais." }, "bitWebVault": { - "message": "Cofre web Bitwarden" + "message": "Cofre Web Bitwarden" }, "importItems": { "message": "Importar itens" @@ -345,7 +345,7 @@ "message": "Por favor, considere ajudar-nos com uma boa avaliação!" }, "browserNotSupportClipboard": { - "message": "O seu navegador web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente." + "message": "O seu navegador Web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente." }, "verifyIdentity": { "message": "Verificar identidade" @@ -373,7 +373,7 @@ "message": "Palavra-passe mestra inválida" }, "vaultTimeout": { - "message": "Expiração do cofre" + "message": "Tempo limite do cofre" }, "lockNow": { "message": "Bloquear agora" @@ -415,7 +415,7 @@ "message": "No bloqueio do sistema" }, "onRestart": { - "message": "Ao reiniciar o sistema" + "message": "Ao reiniciar o navegador" }, "never": { "message": "Nunca" @@ -439,7 +439,7 @@ "message": "É necessário reescrever a palavra-passe mestra." }, "masterPasswordMinlength": { - "message": "Master password must be at least $VALUE$ characters long.", + "message": "A palavra-passe mestra deve ter pelo menos $VALUE$ caracteres.", "description": "The Master Password must be at least a specific number of characters long.", "placeholders": { "value": { @@ -583,26 +583,26 @@ "message": "Procurar no tipo" }, "noneFolder": { - "message": "Em nenhuma pasta", + "message": "Sem pasta", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { - "message": "Ask to add login" + "message": "Pedir para adicionar credencial" }, "addLoginNotificationDesc": { "message": "Pedir para adicionar um item se não o encontrar no seu cofre." }, "showCardsCurrentTab": { - "message": "Show cards on Tab page" + "message": "Mostrar cartões na página Separador" }, "showCardsCurrentTabDesc": { - "message": "List card items on the Tab page for easy auto-fill." + "message": "Listar itens de cartões na página Separador para facilitar o preenchimento automático." }, "showIdentitiesCurrentTab": { - "message": "Show identities on Tab page" + "message": "Mostrar identidades na página Separador" }, "showIdentitiesCurrentTabDesc": { - "message": "List identity items on the Tab page for easy auto-fill." + "message": "Listar itens de identidades na página Separador para facilitar o preenchimento automático." }, "clearClipboard": { "message": "Limpar área de transferência", @@ -619,10 +619,10 @@ "message": "Guardar" }, "enableChangedPasswordNotification": { - "message": "Ask to update existing login" + "message": "Pedir para atualizar credencial existente" }, "changedPasswordNotificationDesc": { - "message": "Ask to update a login's password when a change is detected on a website." + "message": "Pedir para atualizar a palavra-passe de uma credencial quando for detetada uma alteração num site." }, "notificationChangeDesc": { "message": "Pretende atualizar esta palavra-passe no Bitwarden?" @@ -631,17 +631,17 @@ "message": "Atualizar" }, "enableContextMenuItem": { - "message": "Show context menu options" + "message": "Mostrar opções do menu de contexto" }, "contextMenuItemDesc": { - "message": "Use a secondary click to access password generation and matching logins for the website. " + "message": "Utilize um clique secundário para aceder à geração de palavras-passe e às credenciais correspondentes do site. " }, "defaultUriMatchDetection": { "message": "Deteção de correspondência de URI predefinida", "description": "Default URI match detection for auto-fill." }, "defaultUriMatchDetectionDesc": { - "message": "Escolha a forma predefinida como a deteção de correspondência de URI é tratada para inícios de sessão ao executar ações como o preenchimento automático." + "message": "Escolha a forma predefinida como a deteção de correspondência de URI é tratada para credenciais ao executar ações como o preenchimento automático." }, "theme": { "message": "Tema" @@ -678,7 +678,7 @@ "message": "Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização." }, "encExportKeyWarningDesc": { - "message": "Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação." + "message": "Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez alterar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação." }, "encExportAccountWarningDesc": { "message": "As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente." @@ -772,7 +772,7 @@ "message": "Gerir subscrição" }, "premiumManageAlert": { - "message": "Pode gerir a sua subscrição no cofre web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode gerir a sua subscrição no cofre Web bitwarden.com. Pretende visitar o site agora?" }, "premiumRefresh": { "message": "Atualizar subscrição" @@ -793,7 +793,7 @@ "message": "Higiene de palavras-passe, saúde da conta e relatórios de violação de dados para manter o seu cofre seguro." }, "ppremiumSignUpTotp": { - "message": "Gerador de código de verificação TOTP (2FA) para inícios de sessão no seu cofre." + "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre." }, "ppremiumSignUpSupport": { "message": "Prioridade no apoio ao cliente." @@ -805,7 +805,7 @@ "message": "Adquirir Premium" }, "premiumPurchaseAlert": { - "message": "Pode adquirir uma subscrição Premium no cofre web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode adquirir uma subscrição Premium no cofre Web bitwarden.com. Pretende visitar o site agora?" }, "premiumCurrentMember": { "message": "É um membro Premium!" @@ -826,13 +826,13 @@ "message": "Atualização concluída" }, "enableAutoTotpCopy": { - "message": "Copy TOTP automatically" + "message": "Copiar TOTP automaticamente" }, "disableAutoTotpCopyDesc": { - "message": "Se um início de sessão tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão." + "message": "Se uma credencial tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão." }, "enableAutoBiometricsPrompt": { - "message": "Ask for biometrics on launch" + "message": "Pedir biometria ao iniciar" }, "premiumRequired": { "message": "É necessária uma subscrição Premium" @@ -862,10 +862,10 @@ } }, "rememberMe": { - "message": "Memorizar-me" + "message": "Memorizar" }, "sendVerificationCodeEmailAgain": { - "message": "Enviar código de verificação novamente" + "message": "Enviar e-mail com o código de verificação novamente" }, "useAnotherTwoStepMethod": { "message": "Utilizar outro método de verificação de dois passos" @@ -889,10 +889,10 @@ "message": "Início de sessão indisponível" }, "noTwoStepProviders": { - "message": "Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores da verificação de dois passos configurada é suportado por este navegador web." + "message": "Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores da verificação de dois passos configurada é suportado por este navegador Web." }, "noTwoStepProviders2": { - "message": "Utilize um navegador web suportado (como o Chrome) e/ou adicione fornecedores adicionais que sejam mais bem suportados nos navegadores web (como uma aplicação de autenticação)." + "message": "Por favor, utilize um navegador Web suportado (como o Chrome) e/ou adicione fornecedores adicionais que sejam mais bem suportados nos navegadores web (como uma aplicação de autenticação)." }, "twoStepOptions": { "message": "Opções de verificação de dois passos" @@ -955,7 +955,7 @@ "message": "URL do servidor da API" }, "webVaultUrl": { - "message": "URL do servidor do cofre web" + "message": "URL do servidor do cofre Web" }, "identityUrl": { "message": "URL do servidor de identidade" @@ -973,13 +973,13 @@ "message": "Preencher automaticamente ao carregar a página" }, "enableAutoFillOnPageLoadDesc": { - "message": "Se for detetado um formulário de início de sessão, o preenchimento automático é efetuado quando a página web é carregada." + "message": "Se for detetado um formulário de início de sessão, o preenchimento automático é efetuado quando a página Web é carregada." }, "experimentalFeature": { - "message": "Compromised or untrusted websites can exploit auto-fill on page load." + "message": "Os sites comprometidos ou não confiáveis podem explorar o preenchimento automático ao carregar a página." }, "learnMoreAboutAutofill": { - "message": "Learn more about auto-fill" + "message": "Saber mais sobre o preenchimento automático" }, "defaultAutoFillOnPageLoad": { "message": "Definição de preenchimento automático predefinido para itens de início de sessão" @@ -1056,16 +1056,16 @@ "message": "Este navegador não pode processar pedidos U2F nesta janela pop-up. Pretende abrir este pop-up numa nova janela para poder iniciar sessão utilizando o U2F?" }, "enableFavicon": { - "message": "Show website icons" + "message": "Mostrar ícones do site" }, "faviconDesc": { - "message": "Show a recognizable image next to each login." + "message": "Mostrar uma imagem reconhecível junto a cada credencial." }, "enableBadgeCounter": { - "message": "Show badge counter" + "message": "Mostrar distintivo de contador" }, "badgeCounterDesc": { - "message": "Indicate how many logins you have for the current web page." + "message": "Indica quantas credenciais tem para a página Web atual." }, "cardholderName": { "message": "Titular do cartão" @@ -1143,10 +1143,10 @@ "message": "Dr." }, "mx": { - "message": "Mx" + "message": "Neutro" }, "firstName": { - "message": "Primeiro nome" + "message": "Nome próprio" }, "middleName": { "message": "Segundo nome" @@ -1179,16 +1179,16 @@ "message": "Telefone" }, "address": { - "message": "Morada" + "message": "Endereço" }, "address1": { - "message": "1.ª morada" + "message": "Endereço 1" }, "address2": { - "message": "2.ª morada" + "message": "Endereço 2" }, "address3": { - "message": "3.ª morada" + "message": "Endereço 3" }, "cityTown": { "message": "Cidade / Localidade" @@ -1206,10 +1206,10 @@ "message": "Tipo" }, "typeLogin": { - "message": "Início de sessão" + "message": "Credencial" }, "typeLogins": { - "message": "Inícios de sessão" + "message": "Credenciais" }, "typeSecureNote": { "message": "Nota segura" @@ -1245,7 +1245,7 @@ "message": "Identidades" }, "logins": { - "message": "Inícios de sessão" + "message": "Credenciais" }, "secureNotes": { "message": "Notas seguras" @@ -1278,7 +1278,7 @@ "description": "Domain name. Ex. website.com" }, "host": { - "message": "Servidor", + "message": "Domínio", "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { @@ -1406,16 +1406,16 @@ "message": "Deve selecionar pelo menos uma coleção." }, "cloneItem": { - "message": "Clonar item" + "message": "Duplicar item" }, "clone": { - "message": "Clonar" + "message": "Duplicar" }, "passwordGeneratorPolicyInEffect": { "message": "Uma ou mais políticas da organização estão a afetar as suas definições do gerador." }, "vaultTimeoutAction": { - "message": "Ação de expiração do cofre" + "message": "Ação de tempo limite do cofre" }, "lock": { "message": "Bloquear", @@ -1432,7 +1432,7 @@ "message": "Eliminar item permanentemente" }, "permanentlyDeleteItemConfirmation": { - "message": "Tem a certeza de que pretende eliminar este item permanentemente?" + "message": "Tem a certeza de que pretende eliminar permanentemente este item?" }, "permanentlyDeletedItem": { "message": "Item eliminado permanentemente" @@ -1450,7 +1450,7 @@ "message": "Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmação de expiração do cofre" + "message": "Confirmação da ação de tempo limite" }, "autoFillAndSave": { "message": "Preencher automaticamente e guardar" @@ -1462,16 +1462,16 @@ "message": "Item preenchido automaticamente " }, "insecurePageWarning": { - "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page." + "message": "Aviso: Esta é uma página HTTP não segura, e qualquer informação que submeta pode ser vista e alterada por outros. Esta credencial foi originalmente guardada numa página segura (HTTPS)." }, "insecurePageWarningFillPrompt": { - "message": "Do you still wish to fill this login?" + "message": "Ainda deseja preencher este início de sessão?" }, "autofillIframeWarning": { - "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop." + "message": "O formulário está alojado num domínio diferente do URI da sua credencial guardada. Selecione OK para preencher automaticamente na mesma ou Cancelar para parar." }, "autofillIframeWarningTip": { - "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.", + "message": "Para evitar este aviso no futuro, guarde este URI, $HOSTNAME$, no seu item de início de sessão do Bitwarden deste site.", "placeholders": { "hostname": { "content": "$1", @@ -1483,10 +1483,10 @@ "message": "Definir palavra-passe mestra" }, "currentMasterPass": { - "message": "Current master password" + "message": "Palavra-passe mestra atual" }, "newMasterPass": { - "message": "New master password" + "message": "Nova palavra-passe mestra" }, "confirmNewMasterPass": { "message": "Confirmar a nova palavra-passe mestra" @@ -1567,61 +1567,61 @@ "message": "Iniciar a aplicação para computador Bitwarden" }, "startDesktopDesc": { - "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." + "message": "A aplicação para computador do Bitwarden tem de ser iniciada antes de se poder utilizar o desbloqueio com biometria." }, "errorEnableBiometricTitle": { - "message": "Unable to set up biometrics" + "message": "Não é possível configurar a biometria" }, "errorEnableBiometricDesc": { - "message": "Action was canceled by the desktop application" + "message": "A ação foi cancelada pela aplicação para computador" }, "nativeMessagingInvalidEncryptionDesc": { - "message": "Desktop application invalidated the secure communication channel. Please retry this operation" + "message": "A aplicação para computador invalidou o canal de comunicação seguro. Por favor, tente novamente esta operação" }, "nativeMessagingInvalidEncryptionTitle": { - "message": "Desktop communication interrupted" + "message": "Interrupção da comunicação com o computador" }, "nativeMessagingWrongUserDesc": { - "message": "The desktop application is logged into a different account. Please ensure both applications are logged into the same account." + "message": "A aplicação para computador tem a sessão iniciada numa conta diferente. Por favor, certifique-se de que ambas as aplicações têm a sessão iniciada na mesma conta." }, "nativeMessagingWrongUserTitle": { - "message": "Account missmatch" + "message": "Incompatibilidade de contas" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not set up" + "message": "Biometria não configurada" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be set up in the settings first." + "message": "A biometria do navegador requer que a biometria do computador seja primeiro configurada nas definições." }, "biometricsNotSupportedTitle": { - "message": "Biometrics not supported" + "message": "Biometria não suportada" }, "biometricsNotSupportedDesc": { - "message": "Browser biometrics is not supported on this device." + "message": "A biometria do navegador não é suportada neste dispositivo." }, "nativeMessaginPermissionErrorTitle": { - "message": "Permission not provided" + "message": "Autorização não concedida" }, "nativeMessaginPermissionErrorDesc": { - "message": "Without permission to communicate with the Bitwarden Desktop Application we cannot provide biometrics in the browser extension. Please try again." + "message": "Sem autorização para comunicar com a aplicação para computador do Bitwarden, não podemos fornecer dados biométricos na extensão do navegador. Por favor, tente novamente." }, "nativeMessaginPermissionSidebarTitle": { - "message": "Permission request error" + "message": "Erro no pedido de autorização" }, "nativeMessaginPermissionSidebarDesc": { - "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." + "message": "Esta ação não pode ser realizada na barra lateral. Por favor, repita a ação no pop-up ou no popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." + "message": "Devido a uma política empresarial, está impedido de guardar itens no seu cofre pessoal. Altere a opção Propriedade para uma organização e escolha entre as coleções disponíveis." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Uma política da organização está a afetar as suas opções de propriedade." }, "excludedDomains": { - "message": "Excluded domains" + "message": "Domínios excluídos" }, "excludedDomainsDesc": { - "message": "Bitwarden will not ask to save login details for these domains. You must refresh the page for changes to take effect." + "message": "O Bitwarden não pedirá para guardar os detalhes de início de sessão destes domínios. É necessário atualizar a página para que as alterações tenham efeito." }, "excludedDomainsInvalidDomain": { "message": "$DOMAIN$ não é um domínio válido", @@ -1732,10 +1732,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "oneDay": { - "message": "1 day" + "message": "1 dia" }, "days": { - "message": "$DAYS$ days", + "message": "$DAYS$ dias", "placeholders": { "days": { "content": "$1", @@ -1747,69 +1747,69 @@ "message": "Personalizado" }, "maximumAccessCount": { - "message": "Maximum Access Count" + "message": "Número máximo de acessos" }, "maximumAccessCountDesc": { - "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "message": "Se definido, os utilizadores deixarão de poder aceder a este Send quando a contagem máxima de acessos for atingida.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { - "message": "Optionally require a password for users to access this Send.", + "message": "Opcionalmente, exigir uma palavra-passe para os utilizadores acederem a este Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { - "message": "Private notes about this Send.", + "message": "Notas privadas sobre este Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Deactivate this Send so that no one can access it.", + "message": "Desative este Send para que ninguém possa aceder ao mesmo.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Copy this Send's link to clipboard upon save.", + "message": "Copiar o link deste Send para a área de transferência ao guardar.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { - "message": "The text you want to send." + "message": "O texto que deseja enviar." }, "sendHideText": { - "message": "Hide this Send's text by default.", + "message": "Ocultar o texto deste Send por defeito.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current access count" + "message": "Número de acessos atual" }, "createSend": { - "message": "New Send", + "message": "Novo Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Nova palavra-passe" }, "sendDisabled": { - "message": "Send removed", + "message": "Send removido", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { - "message": "Due to an enterprise policy, you are only able to delete an existing Send.", + "message": "Devido a uma política da empresa, só é possível eliminar um Send existente.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send created", + "message": "Send criado", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send saved", + "message": "Send editado", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { - "message": "In order to choose a file, open the extension in the sidebar (if possible) or pop out to a new window by clicking this banner." + "message": "Para escolher um ficheiro, abra a extensão na barra lateral (se possível) ou abra uma nova janela clicando neste banner." }, "sendFirefoxFileWarning": { - "message": "In order to choose a file using Firefox, open the extension in the sidebar or pop out to a new window by clicking this banner." + "message": "Para escolher um ficheiro utilizando o Firefox, abra a extensão na barra lateral ou abra uma nova janela clicando neste banner." }, "sendSafariFileWarning": { - "message": "In order to choose a file using Safari, pop out to a new window by clicking this banner." + "message": "Para escolher um ficheiro utilizando o Safari, abra uma nova janela clicando neste banner." }, "sendFileCalloutHeader": { "message": "Antes de começar" @@ -1848,19 +1848,19 @@ "message": "Uma ou mais políticas da organização estão a afetar as suas opções do Send." }, "passwordPrompt": { - "message": "Master password re-prompt" + "message": "Pedir novamente a palavra-passe mestra" }, "passwordConfirmation": { - "message": "Master password confirmation" + "message": "Confirmação da palavra-passe mestra" }, "passwordConfirmationDesc": { - "message": "This action is protected. To continue, please re-enter your master password to verify your identity." + "message": "Esta ação está protegida. Para continuar, por favor, reintroduza a sua palavra-passe mestra para verificar a sua identidade." }, "emailVerificationRequired": { - "message": "Email verification required" + "message": "Verificação de e-mail necessária" }, "emailVerificationRequiredDesc": { - "message": "You must verify your email to use this feature. You can verify your email in the web vault." + "message": "Tem de verificar o seu e-mail para utilizar esta funcionalidade. Pode verificar o seu e-mail no cofre Web." }, "updatedMasterPassword": { "message": "Palavra-passe mestra atualizada" @@ -1869,22 +1869,22 @@ "message": "Atualizar palavra-passe mestra" }, "updateMasterPasswordWarning": { - "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." + "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." }, "updateWeakMasterPasswordWarning": { - "message": "A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." + "message": "A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." }, "resetPasswordPolicyAutoEnroll": { "message": "Inscrição automática" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + "message": "Esta organização tem uma política empresarial que o inscreverá automaticamente na redefinição de palavra-passe. A inscrição permitirá que os administradores da organização alterem a sua palavra-passe mestra." }, "selectFolder": { "message": "Selecionar pasta..." }, "ssoCompleteRegistration": { - "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + "message": "Para concluir o início de sessão com SSO, por favor, defina uma palavra-passe mestra para aceder e proteger o seu cofre." }, "hours": { "message": "Horas" @@ -1893,7 +1893,7 @@ "message": "Minutos" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organization policies have set your maximum allowed vault timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "As políticas da sua organização definiram o tempo limite máximo permitido do cofre de $HOURS$ hora(s) e $MINUTES$ minuto(s).", "placeholders": { "hours": { "content": "$1", @@ -1906,7 +1906,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "As políticas da sua organização estão a afetar o tempo limite do cofre. O tempo limite máximo permitido do cofre é de $HOURS$ hora(s) e $MINUTES$ minuto(s). A sua ação de tempo limite do cofre está definida para $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1923,7 +1923,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "As políticas da sua organização definiram a ação de tempo limite do cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1932,22 +1932,22 @@ } }, "vaultTimeoutTooLarge": { - "message": "Your vault timeout exceeds the restrictions set by your organization." + "message": "O tempo limite do seu cofre excede as restrições definidas pela sua organização." }, "vaultExportDisabled": { - "message": "Vault export unavailable" + "message": "Exportação de cofre indisponível" }, "personalVaultExportPolicyInEffect": { "message": "Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal." }, "copyCustomFieldNameInvalidElement": { - "message": "Unable to identify a valid form element. Try inspecting the HTML instead." + "message": "Não foi possível identificar um elemento de formulário válido. Em alternativa, tente inspecionar o HTML." }, "copyCustomFieldNameNotUnique": { - "message": "No unique identifier found." + "message": "Não foi encontrado um identificador único." }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "message": "A $ORGANIZATION$ está a utilizar o SSO com um servidor de chaves auto-hospedado. Já não é necessária uma palavra-passe mestra para iniciar sessão para os membros desta organização.", "placeholders": { "organization": { "content": "$1", @@ -1971,7 +1971,7 @@ "message": "Saiu da organização." }, "toggleCharacterCount": { - "message": "Toggle character count" + "message": "Mostrar/ocultar contagem de caracteres" }, "sessionTimeout": { "message": "A sua sessão expirou. Por favor, volte atrás e tente iniciar sessão novamente." @@ -2032,13 +2032,13 @@ "message": "Serviço" }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Alias de e-mail reencaminhado" }, "forwardedEmailDesc": { - "message": "Generate an email alias with an external forwarding service." + "message": "Gerar um alias de e-mail com um serviço de reencaminhamento externo." }, "hostname": { - "message": "Hostname", + "message": "Nome de domínio", "description": "Part of a URL." }, "apiAccessToken": { @@ -2048,16 +2048,16 @@ "message": "Chave da API" }, "ssoKeyConnectorError": { - "message": "Key connector error: make sure key connector is available and working correctly." + "message": "Erro no Key Connector: certifique-se de que o Key Connector está disponível e a funcionar corretamente." }, "premiumSubcriptionRequired": { "message": "É necessária uma subscrição Premium" }, "organizationIsDisabled": { - "message": "Organization suspended." + "message": "Organização suspensa." }, "disabledOrganizationFilterError": { - "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Não é possível aceder aos itens de organizações suspensas. Contacte o proprietário da organização para obter assistência." }, "loggingInTo": { "message": "A iniciar sessão em $DOMAIN$", @@ -2078,16 +2078,16 @@ "message": "para voltar às definições predefinidas" }, "serverVersion": { - "message": "Server version" + "message": "Versão do servidor" }, "selfHosted": { - "message": "Self-hosted" + "message": "Auto-hospedado" }, "thirdParty": { - "message": "Third-party" + "message": "De terceiros" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Ligado à implementação de um servidor de terceiros, $SERVERNAME$. Por favor, verifique os erros utilizando o servidor oficial ou reporte-os ao servidor de terceiros.", "placeholders": { "servername": { "content": "$1", @@ -2096,7 +2096,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "visto pela última vez em: $DATE$", "placeholders": { "date": { "content": "$1", @@ -2120,52 +2120,52 @@ "message": "Memorizar e-mail" }, "loginWithDevice": { - "message": "Log in with device" + "message": "Iniciar sessão com o dispositivo" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be set up in the settings of the Bitwarden app. Need another option?" + "message": "O início de sessão com o dispositivo deve ser ativado nas definições da aplicação Bitwarden. Necessita de outra opção?" }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Frase de impressão digital" }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device." + "message": "Por favor, certifique-se de que o cofre está desbloqueado e que a frase de impressão digital corresponde à do outro dispositivo." }, "resendNotification": { - "message": "Resend notification" + "message": "Reenviar notificação" }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Ver todas as opções de início de sessão" }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Foi enviada uma notificação para o seu dispositivo." }, "logInInitiated": { - "message": "Log in initiated" + "message": "A preparar o início de sessão" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "Palavra-passe mestra exposta" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "Palavra-passe encontrada numa violação de dados. Utilize uma palavra-passe única para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe exposta?" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "Palavra-passe mestra fraca e exposta" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "Palavra-passe fraca identificada e encontrada numa violação de dados. Utilize uma palavra-passe forte e única para proteger a sua conta. Tem a certeza de que pretende utilizar esta palavra-passe?" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "Verificar violações de dados conhecidas para esta palavra-passe" }, "important": { - "message": "Important:" + "message": "Importante:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "A sua palavra-passe mestra não pode ser recuperada se a esquecer!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "$LENGTH$ caracteres no mínimo", "placeholders": { "length": { "content": "$1", @@ -2174,13 +2174,13 @@ } }, "autofillPageLoadPolicyActivated": { - "message": "Your organization policies have turned on auto-fill on page load." + "message": "As políticas da sua organização ativaram o preenchimento automático ao carregar a página." }, "howToAutofill": { - "message": "How to auto-fill" + "message": "Como preencher automaticamente" }, "autofillSelectInfoWithCommand": { - "message": "Select an item from this page or use the shortcut: $COMMAND$", + "message": "Selecione um item desta página ou utilize o atalho: $COMMAND$", "placeholders": { "command": { "content": "$1", @@ -2189,22 +2189,22 @@ } }, "autofillSelectInfoWithoutCommand": { - "message": "Select an item from this page or set a shortcut in settings." + "message": "Selecione um item desta página ou defina um atalho nas definições." }, "gotIt": { - "message": "Got it" + "message": "Percebido" }, "autofillSettings": { - "message": "Auto-fill settings" + "message": "Definições de preenchimento automático" }, "autofillShortcut": { - "message": "Auto-fill keyboard shortcut" + "message": "Atalho de teclado de preenchimento automático" }, "autofillShortcutNotSet": { - "message": "The auto-fill shortcut is not set. Change this in the browser's settings." + "message": "O atalho de preenchimento automático não está definido. Altere-o nas definições do navegador." }, "autofillShortcutText": { - "message": "The auto-fill shortcut is: $COMMAND$. Change this in the browser's settings.", + "message": "O atalho de preenchimento automático é: $COMMAND$. Altere-o nas definições do navegador.", "placeholders": { "command": { "content": "$1", @@ -2213,7 +2213,7 @@ } }, "autofillShortcutTextSafari": { - "message": "Default auto-fill shortcut: $COMMAND$.", + "message": "Atalho de preenchimento automático predefinido: $COMMAND$.", "placeholders": { "command": { "content": "$1", @@ -2225,7 +2225,7 @@ "message": "Região" }, "opensInANewWindow": { - "message": "Opens in a new window" + "message": "Abrir numa nova janela" }, "eu": { "message": "UE", @@ -2234,5 +2234,8 @@ "us": { "message": "EUA", "description": "United States" + }, + "accessDenied": { + "message": "Acesso negado. Não tem permissão para visualizar esta página." } } diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index 47a684aa1ae..63ded6f3b0b 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 9da7f861dc8..5a48ee85214 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "США", "description": "United States" + }, + "accessDenied": { + "message": "Доступ запрещен. У вас нет разрешения на просмотр этой страницы." } } diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index 94baba9b6da..6cdde8fd675 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index 2fa04daf3df..0d0bb2efa4a 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "USA", "description": "United States" + }, + "accessDenied": { + "message": "Prístup zamietnutý. Nemáte oprávnenie na zobrazenie tejto stránky." } } diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index 53c32c686c5..dcdf3d9d25b 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -1042,11 +1042,11 @@ "message": "Logična vrednost" }, "cfTypeLinked": { - "message": "Linked", + "message": "Povezano polje", "description": "This describes a field that is 'linked' (tied) to another field." }, "linkedValue": { - "message": "Linked value", + "message": "Povezana vrednost", "description": "This describes a value that is 'linked' (tied) to another value." }, "popup2faCloseMessage": { @@ -1762,18 +1762,18 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Onemogoči to pošiljko, da nihče ne more dostopati do nje", + "message": "Onemogoči to pošiljko, da nihče ne more dostopati do nje.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { - "message": "Kopiraj povezavo te pošiljke v odložišče po shranjevanju", + "message": "Kopiraj povezavo te pošiljke v odložišče, ko shranim.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendTextDesc": { "message": "Besedilo, ki ga želite poslati" }, "sendHideText": { - "message": "Privzeto skrij besedilo te pošiljke", + "message": "Privzeto skrij besedilo te pošiljke.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index 952ae901451..bf563899e7b 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Одбијен приступ. Немате дозволу да видите ову страницу." } } diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index 79afc8729d5..b0992638305 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json index 69d26333a84..27c985453e9 100644 --- a/apps/browser/src/_locales/te/messages.json +++ b/apps/browser/src/_locales/te/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index 1e43987ab06..da7c1104f26 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index cdc8e109fe4..3a79113609d 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "ABD", "description": "United States" + }, + "accessDenied": { + "message": "Erişim engellendi. Bu sayfayı görüntüleme iznine sahip değilsiniz." } } diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index 1969bc33624..a239bc17ab5 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "США", "description": "United States" + }, + "accessDenied": { + "message": "Доступ заборонено. У вас немає дозволу на перегляд цієї сторінки." } } diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index fee4c66f3a9..66aab88a3bb 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index 2275865d060..e2ef2613606 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -2054,10 +2054,10 @@ "message": "需要高级版订阅" }, "organizationIsDisabled": { - "message": "组织已暂停。" + "message": "组织已停用。" }, "disabledOrganizationFilterError": { - "message": "无法访问已暂停组织中的项目。请联系您的组织所有者获取帮助。" + "message": "无法访问已停用组织中的项目。请联系您的组织所有者获取协助。" }, "loggingInTo": { "message": "正在登录到 $DOMAIN$", @@ -2234,5 +2234,8 @@ "us": { "message": "美国", "description": "United States" + }, + "accessDenied": { + "message": "访问被拒绝。您没有权限查看此页面。" } } diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index 42e082f136b..fef6ab9ee33 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -2234,5 +2234,8 @@ "us": { "message": "US", "description": "United States" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts index eefbf8e27fb..5612cedb91c 100644 --- a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts +++ b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts @@ -5,10 +5,6 @@ import { policyServiceFactory, PolicyServiceInitOptions, } from "../../../admin-console/background/service-factories/policy-service.factory"; -import { - passwordGenerationServiceFactory, - PasswordGenerationServiceInitOptions, -} from "../../../background/service-factories/password-generation-service.factory"; import { apiServiceFactory, ApiServiceInitOptions, @@ -51,6 +47,10 @@ import { stateServiceFactory, StateServiceInitOptions, } from "../../../platform/background/service-factories/state-service.factory"; +import { + passwordStrengthServiceFactory, + PasswordStrengthServiceInitOptions, +} from "../../../tools/background/service_factories/password-strength-service.factory"; import { keyConnectorServiceFactory, @@ -75,7 +75,7 @@ export type AuthServiceInitOptions = AuthServiceFactoyOptions & I18nServiceInitOptions & EncryptServiceInitOptions & PolicyServiceInitOptions & - PasswordGenerationServiceInitOptions; + PasswordStrengthServiceInitOptions; export function authServiceFactory( cache: { authService?: AbstractAuthService } & CachedServices, @@ -100,7 +100,7 @@ export function authServiceFactory( await twoFactorServiceFactory(cache, opts), await i18nServiceFactory(cache, opts), await encryptServiceFactory(cache, opts), - await passwordGenerationServiceFactory(cache, opts), + await passwordStrengthServiceFactory(cache, opts), await policyServiceFactory(cache, opts) ) ); diff --git a/apps/browser/src/auth/popup/lock.component.ts b/apps/browser/src/auth/popup/lock.component.ts index d95ff79fc8f..d13609f61d4 100644 --- a/apps/browser/src/auth/popup/lock.component.ts +++ b/apps/browser/src/auth/popup/lock.component.ts @@ -18,7 +18,7 @@ import { LogService } from "@bitwarden/common/platform/abstractions/log.service" import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; -import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; +import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors"; @@ -48,7 +48,7 @@ export class LockComponent extends BaseLockComponent { ngZone: NgZone, policyApiService: PolicyApiServiceAbstraction, policyService: InternalPolicyService, - passwordGenerationService: PasswordGenerationServiceAbstraction, + passwordStrengthService: PasswordStrengthServiceAbstraction, private authService: AuthService, dialogService: DialogServiceAbstraction ) { @@ -68,7 +68,7 @@ export class LockComponent extends BaseLockComponent { ngZone, policyApiService, policyService, - passwordGenerationService, + passwordStrengthService, dialogService ); this.successRoute = "/tabs/current"; diff --git a/apps/browser/src/auth/popup/login.component.ts b/apps/browser/src/auth/popup/login.component.ts index 496de2c54b5..776b792fa1d 100644 --- a/apps/browser/src/auth/popup/login.component.ts +++ b/apps/browser/src/auth/popup/login.component.ts @@ -3,13 +3,13 @@ import { FormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/auth/components/login.component"; +import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { DevicesApiServiceAbstraction } from "@bitwarden/common/abstractions/devices/devices-api.service.abstraction"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { LoginService } from "@bitwarden/common/auth/abstractions/login.service"; import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service"; import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; -import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; diff --git a/apps/browser/src/auth/popup/register.component.ts b/apps/browser/src/auth/popup/register.component.ts index b061e1faf6a..ad7a9e1cc68 100644 --- a/apps/browser/src/auth/popup/register.component.ts +++ b/apps/browser/src/auth/popup/register.component.ts @@ -3,13 +3,13 @@ import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/components/register.component"; +import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; -import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; diff --git a/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts b/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts index be7dee80a07..a5cf1c70655 100644 --- a/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts +++ b/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts @@ -16,11 +16,11 @@ import { import { totpServiceFactory } from "../../auth/background/service-factories/totp-service.factory"; import LockedVaultPendingNotificationsItem from "../../background/models/lockedVaultPendingNotificationsItem"; import { eventCollectionServiceFactory } from "../../background/service-factories/event-collection-service.factory"; -import { passwordGenerationServiceFactory } from "../../background/service-factories/password-generation-service.factory"; import { Account } from "../../models/account"; import { CachedServices } from "../../platform/background/service-factories/factory-options"; import { stateServiceFactory } from "../../platform/background/service-factories/state-service.factory"; import { BrowserApi } from "../../platform/browser/browser-api"; +import { passwordGenerationServiceFactory } from "../../tools/background/service_factories/password-generation-service.factory"; import { cipherServiceFactory, CipherServiceInitOptions, diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 66b3281c915..f816624097b 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -9,12 +9,10 @@ import { SettingsService as SettingsServiceAbstraction } from "@bitwarden/common import { TotpService as TotpServiceAbstraction } from "@bitwarden/common/abstractions/totp.service"; import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService as VaultTimeoutSettingsServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; -import { CollectionService as CollectionServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { InternalOrganizationService as InternalOrganizationServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { InternalPolicyService as InternalPolicyServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { ProviderService as ProviderServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/provider.service"; -import { CollectionService } from "@bitwarden/common/admin-console/services/collection.service"; import { PolicyApiService } from "@bitwarden/common/admin-console/services/policy/policy-api.service"; import { ProviderService } from "@bitwarden/common/admin-console/services/provider.service"; import { AuthService as AuthServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth.service"; @@ -75,10 +73,15 @@ import { UsernameGenerationService, UsernameGenerationServiceAbstraction, } from "@bitwarden/common/tools/generator/username"; +import { + PasswordStrengthService, + PasswordStrengthServiceAbstraction, +} from "@bitwarden/common/tools/password-strength"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service"; import { SendApiService as SendApiServiceAbstraction } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; import { InternalSendService as InternalSendServiceAbstraction } from "@bitwarden/common/tools/send/services/send.service.abstraction"; import { CipherService as CipherServiceAbstraction } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService as CollectionServiceAbstraction } from "@bitwarden/common/vault/abstractions/collection.service"; import { CipherFileUploadService as CipherFileUploadServiceAbstraction } from "@bitwarden/common/vault/abstractions/file-upload/cipher-file-upload.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction"; import { InternalFolderService as InternalFolderServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; @@ -86,6 +89,7 @@ import { SyncNotifierService as SyncNotifierServiceAbstraction } from "@bitwarde import { SyncService as SyncServiceAbstraction } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CipherService } from "@bitwarden/common/vault/services/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/services/collection.service"; import { CipherFileUploadService } from "@bitwarden/common/vault/services/file-upload/cipher-file-upload.service"; import { FolderApiService } from "@bitwarden/common/vault/services/folder/folder-api.service"; import { SyncNotifierService } from "@bitwarden/common/vault/services/sync/sync-notifier.service"; @@ -155,6 +159,7 @@ export default class MainBackground { vaultTimeoutSettingsService: VaultTimeoutSettingsServiceAbstraction; syncService: SyncServiceAbstraction; passwordGenerationService: PasswordGenerationServiceAbstraction; + passwordStrengthService: PasswordStrengthServiceAbstraction; totpService: TotpServiceAbstraction; autofillService: AutofillServiceAbstraction; containerService: ContainerService; @@ -360,6 +365,9 @@ export default class MainBackground { this.collectionService, this.policyService ); + + this.passwordStrengthService = new PasswordStrengthService(); + this.passwordGenerationService = new PasswordGenerationService( this.cryptoService, this.policyService, @@ -391,7 +399,7 @@ export default class MainBackground { this.twoFactorService, this.i18nService, this.encryptService, - this.passwordGenerationService, + this.passwordStrengthService, this.policyService ); diff --git a/apps/browser/src/background/service-factories/vault-timeout-service.factory.ts b/apps/browser/src/background/service-factories/vault-timeout-service.factory.ts index f3f97803d1e..601867ad385 100644 --- a/apps/browser/src/background/service-factories/vault-timeout-service.factory.ts +++ b/apps/browser/src/background/service-factories/vault-timeout-service.factory.ts @@ -1,9 +1,5 @@ import { VaultTimeoutService as AbstractVaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; -import { - collectionServiceFactory, - CollectionServiceInitOptions, -} from "../../admin-console/background/service-factories/collection-service.factory"; import { authServiceFactory, AuthServiceInitOptions, @@ -38,6 +34,10 @@ import { cipherServiceFactory, CipherServiceInitOptions, } from "../../vault/background/service_factories/cipher-service.factory"; +import { + collectionServiceFactory, + CollectionServiceInitOptions, +} from "../../vault/background/service_factories/collection-service.factory"; import { folderServiceFactory, FolderServiceInitOptions, diff --git a/apps/browser/src/models/browserGroupingsComponentState.ts b/apps/browser/src/models/browserGroupingsComponentState.ts index f47a9ff6ac6..57e80216c23 100644 --- a/apps/browser/src/models/browserGroupingsComponentState.ts +++ b/apps/browser/src/models/browserGroupingsComponentState.ts @@ -1,8 +1,8 @@ -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { Utils } from "@bitwarden/common/platform/misc/utils"; import { DeepJsonify } from "@bitwarden/common/types/deep-jsonify"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; import { BrowserComponentState } from "./browserComponentState"; diff --git a/apps/browser/src/platform/listeners/on-command-listener.ts b/apps/browser/src/platform/listeners/on-command-listener.ts index 1511e937813..65af31e173c 100644 --- a/apps/browser/src/platform/listeners/on-command-listener.ts +++ b/apps/browser/src/platform/listeners/on-command-listener.ts @@ -6,12 +6,12 @@ import { authServiceFactory } from "../../auth/background/service-factories/auth import { autofillServiceFactory } from "../../autofill/background/service_factories/autofill-service.factory"; import { GeneratePasswordToClipboardCommand } from "../../autofill/clipboard"; import { AutofillTabCommand } from "../../autofill/commands/autofill-tab-command"; -import { - PasswordGenerationServiceInitOptions, - passwordGenerationServiceFactory, -} from "../../background/service-factories/password-generation-service.factory"; import { Account } from "../../models/account"; import { stateServiceFactory } from "../../platform/background/service-factories/state-service.factory"; +import { + passwordGenerationServiceFactory, + PasswordGenerationServiceInitOptions, +} from "../../tools/background/service_factories/password-generation-service.factory"; import { CachedServices } from "../background/service-factories/factory-options"; import { logServiceFactory } from "../background/service-factories/log-service.factory"; import { BrowserApi } from "../browser/browser-api"; diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index d6fe3a22062..7b269800987 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -17,7 +17,6 @@ import { SettingsService } from "@bitwarden/common/abstractions/settings.service import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; import { @@ -63,6 +62,7 @@ import { ContainerService } from "@bitwarden/common/platform/services/container. import { SearchService } from "@bitwarden/common/services/search.service"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; import { UsernameGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/username"; +import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service"; import { SendApiService as SendApiServiceAbstraction } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; import { @@ -70,6 +70,7 @@ import { SendService, } from "@bitwarden/common/tools/send/services/send.service.abstraction"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { CipherFileUploadService } from "@bitwarden/common/vault/abstractions/file-upload/cipher-file-upload.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction"; import { @@ -287,6 +288,11 @@ function getBgService(service: keyof MainBackground) { useFactory: getBgService("platformUtilsService"), deps: [], }, + { + provide: PasswordStrengthServiceAbstraction, + useFactory: getBgService("passwordStrengthService"), + deps: [], + }, { provide: PasswordGenerationServiceAbstraction, useFactory: getBgService("passwordGenerationService"), diff --git a/apps/browser/src/tools/background/service_factories/password-generation-service.factory.ts b/apps/browser/src/tools/background/service_factories/password-generation-service.factory.ts new file mode 100644 index 00000000000..b5a56dc1184 --- /dev/null +++ b/apps/browser/src/tools/background/service_factories/password-generation-service.factory.ts @@ -0,0 +1,46 @@ +import { + PasswordGenerationService, + PasswordGenerationServiceAbstraction, +} from "@bitwarden/common/tools/generator/password"; + +import { + policyServiceFactory, + PolicyServiceInitOptions, +} from "../../../admin-console/background/service-factories/policy-service.factory"; +import { + CryptoServiceInitOptions, + cryptoServiceFactory, +} from "../../../platform/background/service-factories/crypto-service.factory"; +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; +import { + stateServiceFactory, + StateServiceInitOptions, +} from "../../../platform/background/service-factories/state-service.factory"; + +type PasswordGenerationServiceFactoryOptions = FactoryOptions; + +export type PasswordGenerationServiceInitOptions = PasswordGenerationServiceFactoryOptions & + CryptoServiceInitOptions & + PolicyServiceInitOptions & + StateServiceInitOptions; + +export function passwordGenerationServiceFactory( + cache: { passwordGenerationService?: PasswordGenerationServiceAbstraction } & CachedServices, + opts: PasswordGenerationServiceInitOptions +): Promise { + return factory( + cache, + "passwordGenerationService", + opts, + async () => + new PasswordGenerationService( + await cryptoServiceFactory(cache, opts), + await policyServiceFactory(cache, opts), + await stateServiceFactory(cache, opts) + ) + ); +} diff --git a/apps/browser/src/tools/background/service_factories/password-strength-service.factory.ts b/apps/browser/src/tools/background/service_factories/password-strength-service.factory.ts new file mode 100644 index 00000000000..3ebd4636fe3 --- /dev/null +++ b/apps/browser/src/tools/background/service_factories/password-strength-service.factory.ts @@ -0,0 +1,23 @@ +import { + PasswordStrengthService, + PasswordStrengthServiceAbstraction, +} from "@bitwarden/common/tools/password-strength"; + +import { + CachedServices, + factory, + FactoryOptions, +} from "../../../platform/background/service-factories/factory-options"; + +type PasswordStrengthServiceFactoryOptions = FactoryOptions; + +export type PasswordStrengthServiceInitOptions = PasswordStrengthServiceFactoryOptions; + +export function passwordStrengthServiceFactory( + cache: { + passwordStrengthService?: PasswordStrengthServiceAbstraction; + } & CachedServices, + opts: PasswordStrengthServiceInitOptions +): Promise { + return factory(cache, "passwordStrengthService", opts, async () => new PasswordStrengthService()); +} diff --git a/apps/browser/src/tools/popup/generator/generator.component.html b/apps/browser/src/tools/popup/generator/generator.component.html index 3b07c3b2cea..83b2c6dee78 100644 --- a/apps/browser/src/tools/popup/generator/generator.component.html +++ b/apps/browser/src/tools/popup/generator/generator.component.html @@ -405,6 +405,28 @@ /> + +
+ + +
+
+ + +
+
diff --git a/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts b/apps/browser/src/vault/background/service_factories/collection-service.factory.ts similarity index 88% rename from apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts rename to apps/browser/src/vault/background/service_factories/collection-service.factory.ts index dcf48537b37..323eebe27d1 100644 --- a/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts +++ b/apps/browser/src/vault/background/service_factories/collection-service.factory.ts @@ -1,5 +1,5 @@ -import { CollectionService as AbstractCollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; -import { CollectionService } from "@bitwarden/common/admin-console/services/collection.service"; +import { CollectionService as AbstractCollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; +import { CollectionService } from "@bitwarden/common/vault/services/collection.service"; import { cryptoServiceFactory, diff --git a/apps/browser/src/vault/popup/components/vault/add-edit.component.html b/apps/browser/src/vault/popup/components/vault/add-edit.component.html index 9deda95d365..1373669ca17 100644 --- a/apps/browser/src/vault/popup/components/vault/add-edit.component.html +++ b/apps/browser/src/vault/popup/components/vault/add-edit.component.html @@ -163,6 +163,7 @@ class="monospaced" type="{{ showCardNumber ? 'text' : 'password' }}" name="Card.Number" + (input)="onCardNumberChange()" [(ngModel)]="cipher.card.number" appInputVerbatim [readonly]="!cipher.edit && editMode" diff --git a/apps/browser/src/vault/popup/components/vault/add-edit.component.ts b/apps/browser/src/vault/popup/components/vault/add-edit.component.ts index f6e8c1f03b6..68a63fb062d 100644 --- a/apps/browser/src/vault/popup/components/vault/add-edit.component.ts +++ b/apps/browser/src/vault/popup/components/vault/add-edit.component.ts @@ -7,7 +7,6 @@ import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; import { AddEditComponent as BaseAddEditComponent } from "@bitwarden/angular/vault/components/add-edit.component"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -17,6 +16,7 @@ import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/pl import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { PasswordRepromptService } from "@bitwarden/common/vault/abstractions/password-reprompt.service"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; diff --git a/apps/browser/src/vault/popup/components/vault/collections.component.ts b/apps/browser/src/vault/popup/components/vault/collections.component.ts index 1b7570eaf6e..d4615e165b2 100644 --- a/apps/browser/src/vault/popup/components/vault/collections.component.ts +++ b/apps/browser/src/vault/popup/components/vault/collections.component.ts @@ -4,11 +4,11 @@ import { ActivatedRoute } from "@angular/router"; import { first } from "rxjs/operators"; import { CollectionsComponent as BaseCollectionsComponent } from "@bitwarden/angular/admin-console/components/collections.component"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; @Component({ selector: "app-vault-collections", diff --git a/apps/browser/src/vault/popup/components/vault/share.component.ts b/apps/browser/src/vault/popup/components/vault/share.component.ts index e6103b4f261..80188646baf 100644 --- a/apps/browser/src/vault/popup/components/vault/share.component.ts +++ b/apps/browser/src/vault/popup/components/vault/share.component.ts @@ -3,12 +3,12 @@ import { ActivatedRoute, Router } from "@angular/router"; import { first } from "rxjs/operators"; import { ShareComponent as BaseShareComponent } from "@bitwarden/angular/components/share.component"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; @Component({ selector: "app-vault-share", diff --git a/apps/browser/src/vault/popup/components/vault/vault-filter.component.ts b/apps/browser/src/vault/popup/components/vault/vault-filter.component.ts index 1b41a9d0a1b..4be0fe89fe1 100644 --- a/apps/browser/src/vault/popup/components/vault/vault-filter.component.ts +++ b/apps/browser/src/vault/popup/components/vault/vault-filter.component.ts @@ -6,7 +6,6 @@ import { first } from "rxjs/operators"; import { VaultFilter } from "@bitwarden/angular/vault/vault-filter/models/vault-filter.model"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -15,6 +14,7 @@ import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.servi import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; import { BrowserGroupingsComponentState } from "../../../../models/browserGroupingsComponentState"; diff --git a/apps/browser/src/vault/popup/components/vault/vault-items.component.ts b/apps/browser/src/vault/popup/components/vault/vault-items.component.ts index 1ce8b3ab41b..59d7ae92c28 100644 --- a/apps/browser/src/vault/popup/components/vault/vault-items.component.ts +++ b/apps/browser/src/vault/popup/components/vault/vault-items.component.ts @@ -6,17 +6,17 @@ import { first } from "rxjs/operators"; import { VaultItemsComponent as BaseVaultItemsComponent } from "@bitwarden/angular/vault/components/vault-items.component"; import { VaultFilter } from "@bitwarden/angular/vault/vault-filter/models/vault-filter.model"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; import { BrowserComponentState } from "../../../../models/browserComponentState"; diff --git a/apps/browser/src/vault/services/vault-filter.service.ts b/apps/browser/src/vault/services/vault-filter.service.ts index 4b8b9de7085..1caf54fe55b 100644 --- a/apps/browser/src/vault/services/vault-filter.service.ts +++ b/apps/browser/src/vault/services/vault-filter.service.ts @@ -1,10 +1,10 @@ import { VaultFilter } from "@bitwarden/angular/vault/vault-filter/models/vault-filter.model"; import { VaultFilterService as BaseVaultFilterService } from "@bitwarden/angular/vault/vault-filter/services/vault-filter.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; diff --git a/apps/browser/store/locales/lt/copy.resx b/apps/browser/store/locales/lt/copy.resx index d2aa4024c07..e2d30250e09 100644 --- a/apps/browser/store/locales/lt/copy.resx +++ b/apps/browser/store/locales/lt/copy.resx @@ -124,31 +124,31 @@ Saugi ir nemokama slaptažodžių tvarkyklė visiems įrenginiams - Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + Bitwarden, Inc. yra pagrindinė 8bit Solutions LLC įmonė. -NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. +ĮVARDINTA GERIAUSIU SLAPTAŽODŽIŲ TVARKYTOJU. -Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. +Tvarkykite, saugokite, saugokite ir bendrinkite neribotą skaičių slaptažodžių neribotuose įrenginiuose iš bet kurios vietos. „Bitwarden“ teikia atvirojo kodo slaptažodžių valdymo sprendimus visiems – tiek namuose, tiek darbe, tiek keliaujant. -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Generuokite stiprius, unikalius ir atsitiktinius slaptažodžius pagal saugos reikalavimus kiekvienai lankomai svetainei. -Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +„Bitwarden Send“ greitai perduoda užšifruotą informaciją – failus ir paprastą tekstą – tiesiogiai bet kam. -Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. +Bitwarden siūlo komandų ir įmonių planus įmonėms, kad galėtumėte saugiai dalytis slaptažodžiais su kolegomis. -Why Choose Bitwarden: +Kodėl verta rinktis „Bitwarden“: -World-Class Encryption -Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. +Pasaulinės klasės šifravimas +Slaptažodžiai yra apsaugoti naudojant pažangų šifravimą nuo galo iki galo (AES-256 bitai, žyma su grotelėmis ir PBKDF2 SHA-256), todėl jūsų duomenys išliks saugūs ir privatūs. -Built-in Password Generator -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Integruotas slaptažodžių generatorius +Generuokite stiprius, unikalius ir atsitiktinius slaptažodžius pagal saugos reikalavimus kiekvienai lankomai svetainei. -Global Translations -Bitwarden translations exist in 40 languages and are growing, thanks to our global community. +Pasauliniai vertimai +„Bitwarden“ vertimai egzistuoja 40 kalbų ir mūsų pasaulinės bendruomenės dėka auga. -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. +Įvairių platformų programos +Apsaugokite ir bendrinkite neskelbtinus duomenis savo „Bitwarden Vault“ iš bet kurios naršyklės, mobiliojo įrenginio ar stalinio kompiuterio OS ir kt. diff --git a/apps/browser/store/locales/pt_PT/copy.resx b/apps/browser/store/locales/pt_PT/copy.resx index df8db70e3ee..f17e5bebffa 100644 --- a/apps/browser/store/locales/pt_PT/copy.resx +++ b/apps/browser/store/locales/pt_PT/copy.resx @@ -124,31 +124,31 @@ Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos - Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + A Bitwarden, Inc. é a empresa-mãe da 8bit Solutions LLC. -NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. +NOMEADO O MELHOR GESTOR DE PALAVRAS-PASSE PELO THE VERGE, U.S. NEWS & WORLD REPORT, CNET E MUITO MAIS. -Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. +Gerir, armazenar, proteger e partilhar palavras-passe ilimitadas em dispositivos ilimitados a partir de qualquer lugar. O Bitwarden fornece soluções de gestão de palavras-passe de código aberto para todos, seja em casa, no trabalho ou onde estiver. -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Gera palavras-passe fortes, únicas e aleatórias com base em requisitos de segurança para todos os sites que frequenta. -Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +O Bitwarden Send transmite rapidamente informações encriptadas - ficheiros e texto simples - diretamente a qualquer pessoa. -Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. +O Bitwarden oferece os planos Equipas e Empresarial destinados a empresas, para que possa partilhar de forma segura as palavras-passe com os seus colegas. -Why Choose Bitwarden: +Razões para escolher o Bitwarden: -World-Class Encryption -Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. +Encriptação de classe mundial +As palavras-passe são protegidas com encriptação avançada de ponta a ponta (AES-256 bit, salted hashtag e PBKDF2 SHA-256) para que os seus dados permaneçam seguros e privados. -Built-in Password Generator -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +Gerador de palavras-passe incorporado +Gera palavras-passe fortes, únicas e aleatórias com base nos requisitos de segurança para todos os sites que frequenta. -Global Translations -Bitwarden translations exist in 40 languages and are growing, thanks to our global community. +Traduções globais +O Bitwarden está traduzido em 40 idiomas e está a crescer, graças à nossa comunidade global. -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. +Aplicações multiplataforma +Proteja e partilhe dados confidenciais no seu cofre Bitwarden a partir de qualquer navegador, dispositivo móvel ou sistema operativo de computador, e muito mais. @@ -158,7 +158,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo Sincronize e aceda ao seu cofre através de vários dispositivos - Gira todos os seus inícios de sessão e palavras-passe a partir de um cofre seguro + Gira todas as suas credenciais e palavras-passe a partir de um cofre seguro Preencha rapidamente e de forma automática as suas credenciais de início de sessão em qualquer site que visite diff --git a/apps/cli/src/admin-console/models/response/organization-collection.response.ts b/apps/cli/src/admin-console/models/response/organization-collection.response.ts index d58676ad4ea..ca47a4b0741 100644 --- a/apps/cli/src/admin-console/models/response/organization-collection.response.ts +++ b/apps/cli/src/admin-console/models/response/organization-collection.response.ts @@ -1,9 +1,8 @@ -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; +import { CollectionResponse } from "../../../vault/models/collection.response"; import { SelectionReadOnly } from "../selection-read-only"; -import { CollectionResponse } from "./collection.response"; - export class OrganizationCollectionResponse extends CollectionResponse { groups: SelectionReadOnly[]; diff --git a/apps/cli/src/auth/commands/login.command.ts b/apps/cli/src/auth/commands/login.command.ts index b8d8d1335fd..fe9284e2e80 100644 --- a/apps/cli/src/auth/commands/login.command.ts +++ b/apps/cli/src/auth/commands/login.command.ts @@ -35,6 +35,7 @@ import { Utils } from "@bitwarden/common/platform/misc/utils"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/symmetric-crypto-key"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; +import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; import { Response } from "../../models/response"; @@ -54,6 +55,7 @@ export class LoginCommand { protected cryptoFunctionService: CryptoFunctionService, protected environmentService: EnvironmentService, protected passwordGenerationService: PasswordGenerationServiceAbstraction, + protected passwordStrengthService: PasswordStrengthServiceAbstraction, protected platformUtilsService: PlatformUtilsService, protected stateService: StateService, protected cryptoService: CryptoService, @@ -505,7 +507,7 @@ export class LoginCommand { } // Strength & Policy Validation - const strengthResult = this.passwordGenerationService.passwordStrength( + const strengthResult = this.passwordStrengthService.getPasswordStrength( masterPassword, this.email ); diff --git a/apps/cli/src/bw.ts b/apps/cli/src/bw.ts index 956ae23b008..29c1443a713 100644 --- a/apps/cli/src/bw.ts +++ b/apps/cli/src/bw.ts @@ -7,7 +7,6 @@ import * as jsdom from "jsdom"; import { OrganizationUserService } from "@bitwarden/common/abstractions/organization-user/organization-user.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction"; -import { CollectionService } from "@bitwarden/common/admin-console/services/collection.service"; import { OrganizationApiService } from "@bitwarden/common/admin-console/services/organization/organization-api.service"; import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service"; import { PolicyApiService } from "@bitwarden/common/admin-console/services/policy/policy-api.service"; @@ -45,10 +44,15 @@ import { PasswordGenerationService, PasswordGenerationServiceAbstraction, } from "@bitwarden/common/tools/generator/password"; +import { + PasswordStrengthService, + PasswordStrengthServiceAbstraction, +} from "@bitwarden/common/tools/password-strength"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service"; import { SendService } from "@bitwarden/common/tools/send/services/send.service"; import { InternalFolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { CipherService } from "@bitwarden/common/vault/services/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/services/collection.service"; import { CipherFileUploadService } from "@bitwarden/common/vault/services/file-upload/cipher-file-upload.service"; import { FolderApiService } from "@bitwarden/common/vault/services/folder/folder-api.service"; import { FolderService } from "@bitwarden/common/vault/services/folder/folder.service"; @@ -103,6 +107,7 @@ export class Main { vaultTimeoutSettingsService: VaultTimeoutSettingsService; syncService: SyncService; passwordGenerationService: PasswordGenerationServiceAbstraction; + passwordStrengthService: PasswordStrengthServiceAbstraction; totpService: TotpService; containerService: ContainerService; auditService: AuditService; @@ -302,6 +307,8 @@ export class Main { this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService); + this.passwordStrengthService = new PasswordStrengthService(); + this.passwordGenerationService = new PasswordGenerationService( this.cryptoService, this.policyService, @@ -322,7 +329,7 @@ export class Main { this.twoFactorService, this.i18nService, this.encryptService, - this.passwordGenerationService, + this.passwordStrengthService, this.policyService ); diff --git a/apps/cli/src/commands/edit.command.ts b/apps/cli/src/commands/edit.command.ts index e0b81e914ec..960b0999146 100644 --- a/apps/cli/src/commands/edit.command.ts +++ b/apps/cli/src/commands/edit.command.ts @@ -1,5 +1,4 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { CollectionRequest } from "@bitwarden/common/admin-console/models/request/collection.request"; import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request"; import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; @@ -9,6 +8,7 @@ import { Utils } from "@bitwarden/common/platform/misc/utils"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; +import { CollectionRequest } from "@bitwarden/common/vault/models/request/collection.request"; import { OrganizationCollectionRequest } from "../admin-console/models/request/organization-collection.request"; import { OrganizationCollectionResponse } from "../admin-console/models/response/organization-collection.response"; diff --git a/apps/cli/src/commands/get.command.ts b/apps/cli/src/commands/get.command.ts index 5ef7e1e17db..44a94fb430d 100644 --- a/apps/cli/src/commands/get.command.ts +++ b/apps/cli/src/commands/get.command.ts @@ -2,10 +2,8 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { CardExport } from "@bitwarden/common/models/export/card.export"; import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; @@ -22,13 +20,14 @@ import { Utils } from "@bitwarden/common/platform/misc/utils"; import { EncString } from "@bitwarden/common/platform/models/domain/enc-string"; import { SendType } from "@bitwarden/common/tools/send/enums/send-type"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; import { OrganizationCollectionRequest } from "../admin-console/models/request/organization-collection.request"; -import { CollectionResponse } from "../admin-console/models/response/collection.response"; import { OrganizationCollectionResponse } from "../admin-console/models/response/organization-collection.response"; import { OrganizationResponse } from "../admin-console/models/response/organization.response"; import { SelectionReadOnly } from "../admin-console/models/selection-read-only"; @@ -38,6 +37,7 @@ import { TemplateResponse } from "../models/response/template.response"; import { SendResponse } from "../tools/send/models/send.response"; import { CliUtils } from "../utils"; import { CipherResponse } from "../vault/models/cipher.response"; +import { CollectionResponse } from "../vault/models/collection.response"; import { FolderResponse } from "../vault/models/folder.response"; import { DownloadCommand } from "./download.command"; diff --git a/apps/cli/src/commands/list.command.ts b/apps/cli/src/commands/list.command.ts index 59c2b92e74f..8b94eb59822 100644 --- a/apps/cli/src/commands/list.command.ts +++ b/apps/cli/src/commands/list.command.ts @@ -1,27 +1,27 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationUserService } from "@bitwarden/common/abstractions/organization-user/organization-user.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; -import { CollectionData } from "@bitwarden/common/admin-console/models/data/collection.data"; -import { Collection } from "@bitwarden/common/admin-console/models/domain/collection"; -import { - CollectionDetailsResponse as ApiCollectionDetailsResponse, - CollectionResponse as ApiCollectionResponse, -} from "@bitwarden/common/admin-console/models/response/collection.response"; import { ListResponse as ApiListResponse } from "@bitwarden/common/models/response/list.response"; import { Utils } from "@bitwarden/common/platform/misc/utils"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; +import { CollectionData } from "@bitwarden/common/vault/models/data/collection.data"; +import { Collection } from "@bitwarden/common/vault/models/domain/collection"; +import { + CollectionDetailsResponse as ApiCollectionDetailsResponse, + CollectionResponse as ApiCollectionResponse, +} from "@bitwarden/common/vault/models/response/collection.response"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { CollectionResponse } from "../admin-console/models/response/collection.response"; import { OrganizationUserResponse } from "../admin-console/models/response/organization-user.response"; import { OrganizationResponse } from "../admin-console/models/response/organization.response"; import { Response } from "../models/response"; import { ListResponse } from "../models/response/list.response"; import { CliUtils } from "../utils"; import { CipherResponse } from "../vault/models/cipher.response"; +import { CollectionResponse } from "../vault/models/collection.response"; import { FolderResponse } from "../vault/models/folder.response"; export class ListCommand { diff --git a/apps/cli/src/program.ts b/apps/cli/src/program.ts index 122b70c7b49..700a31b3c66 100644 --- a/apps/cli/src/program.ts +++ b/apps/cli/src/program.ts @@ -145,6 +145,7 @@ export class Program { this.main.cryptoFunctionService, this.main.environmentService, this.main.passwordGenerationService, + this.main.passwordStrengthService, this.main.platformUtilsService, this.main.stateService, this.main.cryptoService, diff --git a/apps/cli/src/utils.ts b/apps/cli/src/utils.ts index 42f1482b694..d5e442ded19 100644 --- a/apps/cli/src/utils.ts +++ b/apps/cli/src/utils.ts @@ -5,10 +5,10 @@ import * as inquirer from "inquirer"; import * as JSZip from "jszip"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { NodeUtils } from "@bitwarden/common/misc/nodeUtils"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; import { FolderView } from "@bitwarden/common/vault/models/view/folder.view"; import { Response } from "./models/response"; diff --git a/apps/cli/src/vault/create.command.ts b/apps/cli/src/vault/create.command.ts index d98221dc39c..49a61e6e59d 100644 --- a/apps/cli/src/vault/create.command.ts +++ b/apps/cli/src/vault/create.command.ts @@ -2,7 +2,6 @@ import * as fs from "fs"; import * as path from "path"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { CollectionRequest } from "@bitwarden/common/admin-console/models/request/collection.request"; import { SelectionReadOnlyRequest } from "@bitwarden/common/admin-console/models/request/selection-read-only.request"; import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; @@ -13,6 +12,7 @@ import { Utils } from "@bitwarden/common/platform/misc/utils"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; +import { CollectionRequest } from "@bitwarden/common/vault/models/request/collection.request"; import { OrganizationCollectionRequest } from "../admin-console/models/request/organization-collection.request"; import { OrganizationCollectionResponse } from "../admin-console/models/response/organization-collection.response"; diff --git a/apps/cli/src/admin-console/models/response/collection.response.ts b/apps/cli/src/vault/models/collection.response.ts similarity index 65% rename from apps/cli/src/admin-console/models/response/collection.response.ts rename to apps/cli/src/vault/models/collection.response.ts index 317249829fd..4cdb4bb59e6 100644 --- a/apps/cli/src/admin-console/models/response/collection.response.ts +++ b/apps/cli/src/vault/models/collection.response.ts @@ -1,7 +1,7 @@ -import { CollectionView } from "@bitwarden/common/admin-console/models/view/collection.view"; import { CollectionWithIdExport } from "@bitwarden/common/models/export/collection-with-id.export"; +import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view"; -import { BaseResponse } from "../../../models/response/base.response"; +import { BaseResponse } from "../../models/response/base.response"; export class CollectionResponse extends CollectionWithIdExport implements BaseResponse { object: string; diff --git a/apps/desktop/src/app/app.component.ts b/apps/desktop/src/app/app.component.ts index 3ffd2277c4b..d3829d4e638 100644 --- a/apps/desktop/src/app/app.component.ts +++ b/apps/desktop/src/app/app.component.ts @@ -22,7 +22,6 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SettingsService } from "@bitwarden/common/abstractions/settings.service"; import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { InternalPolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { KeyConnectorService } from "@bitwarden/common/auth/abstractions/key-connector.service"; @@ -39,6 +38,7 @@ import { StateService } from "@bitwarden/common/platform/abstractions/state.serv import { SystemService } from "@bitwarden/common/platform/abstractions/system.service"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { InternalFolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; import { CipherType } from "@bitwarden/common/vault/enums/cipher-type"; diff --git a/apps/desktop/src/app/tools/generator.component.html b/apps/desktop/src/app/tools/generator.component.html index 423b47b3f75..adbe6df3120 100644 --- a/apps/desktop/src/app/tools/generator.component.html +++ b/apps/desktop/src/app/tools/generator.component.html @@ -432,6 +432,28 @@ />
+ +
+ + +
+
+ + +
+
diff --git a/apps/desktop/src/auth/lock.component.ts b/apps/desktop/src/auth/lock.component.ts index ef8dbe967df..61f7b4bfe30 100644 --- a/apps/desktop/src/auth/lock.component.ts +++ b/apps/desktop/src/auth/lock.component.ts @@ -18,7 +18,7 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; -import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password"; +import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength"; import { ElectronStateService } from "../platform/services/electron-state.service.abstraction"; import { BiometricStorageAction, BiometricMessage } from "../types/biometric-message"; @@ -49,7 +49,7 @@ export class LockComponent extends BaseLockComponent { ngZone: NgZone, policyApiService: PolicyApiServiceAbstraction, policyService: InternalPolicyService, - passwordGenerationService: PasswordGenerationServiceAbstraction, + passwordStrengthService: PasswordStrengthServiceAbstraction, logService: LogService, keyConnectorService: KeyConnectorService, dialogService: DialogServiceAbstraction @@ -70,7 +70,7 @@ export class LockComponent extends BaseLockComponent { ngZone, policyApiService, policyService, - passwordGenerationService, + passwordStrengthService, dialogService ); } diff --git a/apps/desktop/src/auth/login/login.component.ts b/apps/desktop/src/auth/login/login.component.ts index 77894b77f6f..bb7a99cca02 100644 --- a/apps/desktop/src/auth/login/login.component.ts +++ b/apps/desktop/src/auth/login/login.component.ts @@ -5,6 +5,7 @@ import { Subject, takeUntil } from "rxjs"; import { EnvironmentSelectorComponent } from "@bitwarden/angular/auth/components/environment-selector.component"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/auth/components/login.component"; +import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { DevicesApiServiceAbstraction } from "@bitwarden/common/abstractions/devices/devices-api.service.abstraction"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; @@ -13,7 +14,6 @@ import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.ser import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; -import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; @@ -151,6 +151,7 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy { // eslint-disable-next-line rxjs/no-async-subscribe childComponent.onSaved.pipe(takeUntil(this.componentDestroyed$)).subscribe(async () => { modal.close(); + this.environmentSelector.updateEnvironmentInfo(); await this.getLoginWithDevice(this.loggedEmail); }); } diff --git a/apps/desktop/src/auth/register.component.ts b/apps/desktop/src/auth/register.component.ts index 6cf46de7c70..f4324f12379 100644 --- a/apps/desktop/src/auth/register.component.ts +++ b/apps/desktop/src/auth/register.component.ts @@ -3,6 +3,7 @@ import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/components/register.component"; +import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; @@ -10,7 +11,6 @@ import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; -import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index 237c0fcb094..bebd26b0189 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Selghehuisves" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 7e558adc15e..9012f6ee1ff 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -2253,17 +2253,20 @@ "message": "تحديث الإعدادات الموصى بها" }, "region": { - "message": "Region" + "message": "المنطقة" }, "eu": { - "message": "EU", + "message": "الاتحاد الأوروبي", "description": "European Union" }, "us": { - "message": "US", + "message": "الولايات المتحدة", "description": "United States" }, "selfHosted": { - "message": "Self-hosted" + "message": "استضافة ذاتية" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index e409110b056..965db4209db 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Öz-özünə sahiblik edən" + }, + "accessDenied": { + "message": "Müraciət rədd edildi. Bu səhifəyə baxmaq üçün icazəniz yoxdur." } } diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index efd52d6444f..1075fbe6da0 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -2253,17 +2253,20 @@ "message": "Рэкамендаваныя налады абнаўлення" }, "region": { - "message": "Region" + "message": "Рэгіён" }, "eu": { - "message": "EU", + "message": "ЕС", "description": "European Union" }, "us": { - "message": "US", + "message": "ЗША", "description": "United States" }, "selfHosted": { - "message": "Self-hosted" + "message": "Уласнае размяшчэнне" + }, + "accessDenied": { + "message": "Доступ забаронены. У вас не дастаткова правоў для прагляду гэтай старонкі." } } diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index 4c893711926..95231adb19a 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Собствен хостинг" + }, + "accessDenied": { + "message": "Достъпът е отказан. Нямате право за преглед на тази страница." } } diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index f6972836d99..93d0c273940 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index e5cc399e208..eabfc7f8067 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index 83731a76f66..5429a271a2a 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Autoallotjat" + }, + "accessDenied": { + "message": "Accés denegat. No teniu permís per veure aquesta pàgina." } } diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index e35a5d78d25..d09e9809aad 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Vlastní hosting" + }, + "accessDenied": { + "message": "Přístup byl odepřen. Nemáte oprávnění k zobrazení této stránky." } } diff --git a/apps/desktop/src/locales/cy/messages.json b/apps/desktop/src/locales/cy/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/cy/messages.json +++ b/apps/desktop/src/locales/cy/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index 6d915a97ab0..fda5cea1451 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Selv-hostet" + }, + "accessDenied": { + "message": "Adgang nægtet. Nødvendig tilladelse til at se siden mangler." } } diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index a757de46dcc..6a521490b70 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Selbst gehostet" + }, + "accessDenied": { + "message": "Zugriff verweigert. Du hast keine Berechtigung, diese Seite anzuzeigen." } } diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index 9e59ee81fe9..d6c8d1e50c3 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json index 2e166573fb8..9debdbc13fe 100644 --- a/apps/desktop/src/locales/en/messages.json +++ b/apps/desktop/src/locales/en/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index fd9426f6429..6a679b10417 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index f3ee40a6dd1..637e752218d 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index bb86246b2d5..b230e753025 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index e8b8fa0b041..c86bde31e87 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Autoalojado" + }, + "accessDenied": { + "message": "Acceso denegado. No tiene permiso para ver esta página." } } diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index 6f05a3f625f..c2757bab62c 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 5e1323a74c0..b308429cec1 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index 220b53cda57..c788c14451e 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index 7287c306da7..96b7282f13c 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -962,7 +962,7 @@ "message": "Käynnistä automaattisesti kirjauduttaessa" }, "openAtLoginDesc": { - "message": "Käynnistä Bitwardenin työpöytäsovellus automaattisesti kirjautumisen yhteydessä." + "message": "Käynnistä sovellus automaattisesti kirjautumisen yhteydessä." }, "alwaysShowDock": { "message": "Näytä aina Dockissa" @@ -1393,7 +1393,7 @@ "message": "Avaa Windows Hellolla" }, "additionalWindowsHelloSettings": { - "message": "Windows Hello -lisäasetukset" + "message": "Windows Hello -lisäasetukset." }, "windowsHelloConsentMessage": { "message": "Vahvista Bitwarden." @@ -1624,7 +1624,7 @@ "message": "Vaadi selainintegraation vahvistus" }, "enableBrowserIntegrationFingerprintDesc": { - "message": "Käytä ylimääräistä tietoturvakerrosta ja edellytä työpöytäsovelluksen ja selainlaajennuksen liitoksen todennus tunnistelausekkeella. Tämä vaatii aina yhteyden muodostuessa vahvistuksen käyttäjältä." + "message": "Paranna tietoturvaa vaatimalla työpöytäsovelluksen ja selainlaajennuksen kytköksen todennus tunnistelausekkeella. Tämä vaatii aina yhteyden muodostuessa vahvistuksen käyttäjältä." }, "approve": { "message": "Salli" @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Itse ylläpidetty" + }, + "accessDenied": { + "message": "Pääsy estetty. Sinulla ei ole oikeutta avata sivua." } } diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index 9613f221e9b..590d96aeb8d 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 0fe9681d2d8..15c54705fa6 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -129,7 +129,7 @@ "message": "Réduire l'application lors de la copie des données d'un élément dans le presse-papiers." }, "toggleVisibility": { - "message": "Afficher/Masquer" + "message": "Afficher/masquer la visibilité" }, "toggleCollapse": { "message": "Déplier ou replier", @@ -151,7 +151,7 @@ "message": "Code de sécurité" }, "identityName": { - "message": "identityName" + "message": "Nom d'identité" }, "company": { "message": "Société" @@ -269,7 +269,7 @@ "message": "Deuxième prénom" }, "lastName": { - "message": "Nom" + "message": "Nom de famille" }, "fullName": { "message": "Nom complet" @@ -352,7 +352,7 @@ "message": "Élément ajouté" }, "editedItem": { - "message": "Élément modifié" + "message": "Élément enregistré" }, "deleteItem": { "message": "Supprimer l'élément" @@ -367,7 +367,7 @@ "message": "Êtes-vous sûr de vouloir envoyer cet élément vers la corbeille ?" }, "deletedItem": { - "message": "L'élément a été envoyé à la corbeille" + "message": "Élément envoyé à la corbeille" }, "overwritePasswordConfirmation": { "message": "Êtes-vous sûr de vouloir écraser le mot de passe actuel ?" @@ -379,7 +379,7 @@ "message": "Êtes-vous sûr de vouloir remplacer le mot de passe actuel ?" }, "noneFolder": { - "message": "Pas de dossier", + "message": "Aucun dossier", "description": "This is the folder for uncategorized items" }, "addFolder": { @@ -464,7 +464,7 @@ "message": "Êtes-vous sûr de vouloir supprimer cette pièce jointe ?" }, "attachmentSaved": { - "message": "La pièce jointe a été enregistrée." + "message": "Pièce jointe enregistrée" }, "file": { "message": "Fichier" @@ -479,7 +479,7 @@ "message": "Vous ne pouvez pas utiliser cette fonctionnalité tant que vous ne mettez pas à jour votre clé de chiffrement." }, "editedFolder": { - "message": "Dossier modifié" + "message": "Dossier enregistré" }, "addedFolder": { "message": "Dossier ajouté" @@ -497,7 +497,7 @@ "message": "Créer un compte" }, "logIn": { - "message": "S'identifier" + "message": "Se connecter" }, "submit": { "message": "Soumettre" @@ -1269,7 +1269,7 @@ "description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open." }, "hideToTray": { - "message": "Masquer" + "message": "Masquer dans la barre des tâches" }, "alwaysOnTop": { "message": "Toujours au premier plan", @@ -1472,10 +1472,10 @@ "message": "Politique de confidentialité" }, "unsavedChangesConfirmation": { - "message": "Êtes-vous sûr de vouloir quitter ? Si vous le faites maintenant, vos informations actuelles ne seront pas sauvegardées." + "message": "Êtes-vous sûr de vouloir quitter ? Si vous quittez maintenant, vos informations actuelles ne seront pas enregistrées." }, "unsavedChangesTitle": { - "message": "Il y a des modifications non enregistrées" + "message": "Modifications non enregistrées" }, "clone": { "message": "Cloner" @@ -1490,7 +1490,7 @@ "message": "Un mot de passe principal ou une autre méthode de déverrouillage est nécessaire pour accéder à nouveau à votre coffre." }, "vaultTimeoutActionLogOutDesc": { - "message": "Un coffre déconnecté nécessite que vous vous ré-authentifiez pour y accéder de nouveau." + "message": "Une nouvelle authentification est requise pour accéder à nouveau à votre coffre." }, "lock": { "message": "Verrouiller", @@ -1528,7 +1528,7 @@ "message": "La déconnexion supprimera tout accès à votre coffre et nécessitera une authentification en ligne après la période d'expiration. Êtes-vous sûr de vouloir utiliser ce paramètre ?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmation de l'action lors de l'expiration du délai" + "message": "Confirmation de l'action après délai d'expiration" }, "enterpriseSingleSignOn": { "message": "Portail de connexion unique d'entreprise" @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Auto-hébergé" + }, + "accessDenied": { + "message": "Accès refusé. Vous n'avez pas l'autorisation de voir cette page." } } diff --git a/apps/desktop/src/locales/gl/messages.json b/apps/desktop/src/locales/gl/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/gl/messages.json +++ b/apps/desktop/src/locales/gl/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index 2cc3461e8a5..39701c9fc07 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index 2324d200193..1b1a8a1b8e5 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index dcf0ae8534e..23b4bebbabb 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index 4016a73db90..b1897f6e4b8 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Saját kiszolgáló" + }, + "accessDenied": { + "message": "A hozzáférés megtagadásra került. Nincs jogosultság az oldal megtekintésére." } } diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index 437838521ae..c4a8b77566c 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index 90580d12aa8..fbbcb2f08c1 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Accesso negato. Non hai i permessi necessari per visualizzare questa pagina." } } diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index d1f12350675..6e89627a5e9 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "自己ホスト型" + }, + "accessDenied": { + "message": "アクセスが拒否されました。このページを表示する権限がありません。" } } diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index 2f1870a2b42..0d1ea3265af 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index b5b4f69d786..2699d1797d9 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index 705aa4ba5c6..17cbb79f5e7 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Pašizvietots" + }, + "accessDenied": { + "message": "Piekļuve liegta. Nav nepieciešamo atļauju, lai skatītu šo lapu." } } diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index c6555d2e8de..98bb03ef7d4 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 104d697f536..18292129999 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/my/messages.json b/apps/desktop/src/locales/my/messages.json index 545c17156b8..ceeb67d0f74 100644 --- a/apps/desktop/src/locales/my/messages.json +++ b/apps/desktop/src/locales/my/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index b431e2a14e1..9123788514f 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ne/messages.json b/apps/desktop/src/locales/ne/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/ne/messages.json +++ b/apps/desktop/src/locales/ne/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index bcd3fd94412..9e7834e88f1 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Zelfgehost" + }, + "accessDenied": { + "message": "Toegang geweigerd. Je hebt geen toestemming om deze pagina te bekijken." } } diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 0b7b4ce1135..d0750b4d2c1 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/or/messages.json b/apps/desktop/src/locales/or/messages.json index ede06949744..02495ffc371 100644 --- a/apps/desktop/src/locales/or/messages.json +++ b/apps/desktop/src/locales/or/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index 2dd103dcd05..2cd26384181 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Samodzielnie hostowany" + }, + "accessDenied": { + "message": "Odmowa dostępu. Nie masz uprawnień do przeglądania tej strony." } } diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index 5e909f4735a..6db0402ba44 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index 13e57dda795..91f2a682adb 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -15,7 +15,7 @@ "message": "Tipos" }, "typeLogin": { - "message": "Início de sessão" + "message": "Credencial" }, "typeCard": { "message": "Cartão" @@ -61,7 +61,7 @@ } }, "moveToOrgDesc": { - "message": "Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário directo deste item depois de este ter sido movido." + "message": "Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário direto deste item depois de este ter sido movido." }, "attachments": { "message": "Anexos" @@ -172,7 +172,7 @@ "message": "Telefone" }, "address": { - "message": "Morada" + "message": "Endereço" }, "premiumRequired": { "message": "É necessária uma subscrição Premium" @@ -239,7 +239,7 @@ "message": "Sra." }, "mx": { - "message": "Mx" + "message": "Neutro" }, "dr": { "message": "Dr." @@ -263,7 +263,7 @@ "message": "Tipo" }, "firstName": { - "message": "Primeiro nome" + "message": "Nome próprio" }, "middleName": { "message": "Segundo nome" @@ -275,13 +275,13 @@ "message": "Nome completo" }, "address1": { - "message": "1.ª morada" + "message": "Endereço 1" }, "address2": { - "message": "2.ª morada" + "message": "Endereço 2" }, "address3": { - "message": "3.ª morada" + "message": "Endereço 3" }, "cityTown": { "message": "Cidade / Localidade" @@ -339,7 +339,7 @@ "description": "This describes a field that is 'linked' (related) to another field." }, "linkedValue": { - "message": "Linked value", + "message": "Valor associado", "description": "This describes a value that is 'linked' (related) to another value." }, "remove": { @@ -379,7 +379,7 @@ "message": "Tem a certeza de que pretende substituir o nome de utilizador atual?" }, "noneFolder": { - "message": "Em nenhuma pasta", + "message": "Sem pasta", "description": "This is the folder for uncategorized items" }, "addFolder": { @@ -398,7 +398,7 @@ "message": "Copiar URI" }, "copyVerificationCodeTotp": { - "message": "Copy verification code (TOTP)" + "message": "Copiar código de verificação (TOTP)" }, "length": { "message": "Comprimento" @@ -542,7 +542,7 @@ "message": "É necessário reescrever a palavra-passe mestra." }, "masterPasswordMinlength": { - "message": "Master password must be at least $VALUE$ characters long.", + "message": "A palavra-passe mestra deve ter pelo menos $VALUE$ caracteres.", "description": "The Master Password must be at least a specific number of characters long.", "placeholders": { "value": { @@ -615,10 +615,10 @@ } }, "rememberMe": { - "message": "Memorizar-me" + "message": "Memorizar" }, "sendVerificationCodeEmailAgain": { - "message": "Enviar código de verificação novamente" + "message": "Enviar e-mail com o código de verificação novamente" }, "useAnotherTwoStepMethod": { "message": "Utilizar outro método de verificação de dois passos" @@ -699,7 +699,7 @@ "message": "URL do servidor da API" }, "webVaultUrl": { - "message": "URL do servidor do cofre web" + "message": "URL do servidor do cofre Web" }, "identityUrl": { "message": "URL do servidor de identidade" @@ -744,7 +744,7 @@ "message": "Terminar sessão" }, "addNewLogin": { - "message": "Novo início de sessão" + "message": "Nova credencial" }, "addNewItem": { "message": "Novo item" @@ -771,7 +771,7 @@ "message": "Contacte-nos" }, "helpAndFeedback": { - "message": "Help and feedback" + "message": "Ajuda e feedback" }, "getHelp": { "message": "Obter ajuda" @@ -799,11 +799,11 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { - "message": "Frase da impressão digital da sua conta", + "message": "Frase de impressão digital da sua conta", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "goToWebVault": { - "message": "Ir para o cofre web" + "message": "Ir para o cofre Web" }, "getMobileApp": { "message": "Obter a aplicação móvel" @@ -846,10 +846,10 @@ "message": "Verificação de dois passos" }, "vaultTimeout": { - "message": "Expiração do cofre" + "message": "Tempo limite do cofre" }, "vaultTimeoutDesc": { - "message": "Escolha a que altura expira o seu cofre, realizando a ação de expiração do mesmo." + "message": "Escolha quando é que o seu cofre executará a ação de tempo limite do cofre." }, "immediately": { "message": "Imediatamente" @@ -911,10 +911,10 @@ "description": "Clipboard is the operating system thing where you copy/paste data to on your device." }, "enableFavicon": { - "message": "Show website icons" + "message": "Mostrar ícones do site" }, "faviconDesc": { - "message": "Show a recognizable image next to each login." + "message": "Mostrar uma imagem reconhecível junto a cada credencial." }, "enableMinToTray": { "message": "Minimizar para ícone de bandeja" @@ -953,28 +953,28 @@ "message": "Quando a aplicação é iniciada pela primeira vez, mostrar apenas um ícone na bandeja do sistema." }, "startToMenuBar": { - "message": "Start to menu bar" + "message": "Iniciar na barra de menus" }, "startToMenuBarDesc": { - "message": "When the application is first started, only show an icon in the menu bar." + "message": "Quando a aplicação é iniciada pela primeira vez, mostrar apenas um ícone na barra de menu." }, "openAtLogin": { - "message": "Start automatically on login" + "message": "Iniciar automaticamente ao iniciar sessão" }, "openAtLoginDesc": { - "message": "Start the Bitwarden desktop application automatically on login." + "message": "Iniciar a aplicação para computador Bitwarden automaticamente ao iniciar a sessão." }, "alwaysShowDock": { - "message": "Always show in the Dock" + "message": "Mostrar sempre na Dock" }, "alwaysShowDockDesc": { - "message": "Show the Bitwarden icon in the Dock even when minimized to the menu bar." + "message": "Mostrar o ícone do Bitwarden na Dock mesmo quando minimizado na barra de menus." }, "confirmTrayTitle": { - "message": "Confirm hiding tray" + "message": "Confirmar a ocultação do tabuleiro" }, "confirmTrayDesc": { - "message": "Turning off this setting will also turn off all other tray related settings." + "message": "Desativar esta definição também desativará todas as outras definições relacionadas com o tabuleiro." }, "language": { "message": "Idioma" @@ -1063,7 +1063,7 @@ "message": "Gerir subscrição" }, "premiumManageAlert": { - "message": "Pode gerir a sua subscrição no cofre web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode gerir a sua subscrição no cofre Web bitwarden.com. Pretende visitar o site agora?" }, "premiumRefresh": { "message": "Atualizar subscrição" @@ -1096,7 +1096,7 @@ "message": "Adquirir Premium" }, "premiumPurchaseAlert": { - "message": "Pode adquirir uma subscrição Premium no cofre web bitwarden.com. Pretende visitar o site agora?" + "message": "Pode adquirir uma subscrição Premium no cofre Web bitwarden.com. Pretende visitar o site agora?" }, "premiumCurrentMember": { "message": "É um membro Premium!" @@ -1127,7 +1127,7 @@ "message": "Não existem palavras-passe para listar." }, "undo": { - "message": "Desfazer" + "message": "Anular" }, "redo": { "message": "Refazer" @@ -1226,11 +1226,11 @@ "description": "Domain name. Ex. website.com" }, "domainName": { - "message": "Domain name", + "message": "Nome do domínio", "description": "Domain name. Ex. website.com" }, "host": { - "message": "Servidor", + "message": "Domínio", "description": "A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'." }, "exact": { @@ -1294,51 +1294,51 @@ "message": "Formato do ficheiro" }, "hCaptchaUrl": { - "message": "hCaptcha Url", + "message": "URL do hCaptcha", "description": "hCaptcha is the name of a website, should not be translated" }, "loadAccessibilityCookie": { - "message": "Load accessibility cookie" + "message": "Carregar cookie de acessibilidade" }, "registerAccessibilityUser": { - "message": "Register as an accessibility user at", + "message": "Registar como utilizador de acessibilidade em", "description": "ex. Register as an accessibility user at hcaptcha.com" }, "copyPasteLink": { - "message": "Copy and paste the link sent to your email below" + "message": "Copie e cole o link enviado para o seu e-mail abaixo" }, "enterhCaptchaUrl": { - "message": "Enter URL to load accessibility cookie for hCaptcha", + "message": "Introduza o URL para carregar o cookie de acessibilidade do hCaptcha", "description": "hCaptcha is the name of a website, should not be translated" }, "hCaptchaUrlRequired": { - "message": "hCaptcha Url is required", + "message": "É necessário o URL do hCaptcha", "description": "hCaptcha is the name of a website, should not be translated" }, "invalidUrl": { - "message": "Invalid Url" + "message": "URL inválido" }, "done": { - "message": "Done" + "message": "Concluído" }, "accessibilityCookieSaved": { - "message": "Accessibility cookie saved!" + "message": "Cookie de acessibilidade guardado!" }, "noAccessibilityCookieSaved": { - "message": "No accessibility cookie saved" + "message": "Nenhum cookie de acessibilidade guardado" }, "warning": { "message": "AVISO", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm vault export" + "message": "Confirmar a exportação do cofre" }, "exportWarningDesc": { "message": "Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização." }, "encExportKeyWarningDesc": { - "message": "Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação." + "message": "Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez alterar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação." }, "encExportAccountWarningDesc": { "message": "As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente." @@ -1393,7 +1393,7 @@ "message": "Desbloquear com o Windows Hello" }, "additionalWindowsHelloSettings": { - "message": "Additional Windows Hello settings" + "message": "Definições adicionais do Windows Hello" }, "windowsHelloConsentMessage": { "message": "Verificar para o Bitwarden." @@ -1402,40 +1402,40 @@ "message": "Desbloquear com Touch ID" }, "additionalTouchIdSettings": { - "message": "Additional Touch ID settings" + "message": "Definições adicionais do Touch ID" }, "touchIdConsentMessage": { - "message": "desbloqueie o seu cofre" + "message": "desbloquear o cofre" }, "autoPromptWindowsHello": { - "message": "Ask for Windows Hello on app start" + "message": "Pedir o Windows Hello ao iniciar a aplicação" }, "autoPromptTouchId": { - "message": "Ask for Touch ID on app start" + "message": "Pedir o Touch ID ao iniciar a aplicação" }, "requirePasswordOnStart": { - "message": "Require password or PIN on app start" + "message": "Exigir palavra-passe ou PIN ao iniciar a aplicação" }, "recommendedForSecurity": { - "message": "Recommended for security." + "message": "Recomendado por segurança." }, "lockWithMasterPassOnRestart": { "message": "Bloquear com a palavra-passe mestra ao reiniciar" }, "deleteAccount": { - "message": "Delete account" + "message": "Eliminar conta" }, "deleteAccountDesc": { - "message": "Proceed below to delete your account and all vault data." + "message": "Proceda da seguinte forma para eliminar a sua conta e todos os dados do cofre." }, "deleteAccountWarning": { - "message": "Deleting your account is permanent. It cannot be undone." + "message": "A eliminação da sua conta é permanente. Não pode ser anulada." }, "accountDeleted": { - "message": "Account deleted" + "message": "Conta eliminada" }, "accountDeletedDesc": { - "message": "Your account has been closed and all associated data has been deleted." + "message": "A sua conta foi encerrada e todos os dados associados foram eliminados." }, "preferences": { "message": "Preferências" @@ -1478,13 +1478,13 @@ "message": "Alterações por guardar" }, "clone": { - "message": "Clonar" + "message": "Duplicar" }, "passwordGeneratorPolicyInEffect": { "message": "Uma ou mais políticas da organização estão a afetar as suas definições do gerador." }, "vaultTimeoutAction": { - "message": "Ação de expiração do cofre" + "message": "Ação de tempo limite do cofre" }, "vaultTimeoutActionLockDesc": { "message": "É necessária uma palavra-passe mestra ou outro método de desbloqueio para aceder novamente ao seu cofre." @@ -1507,7 +1507,7 @@ "message": "Eliminar item permanentemente" }, "permanentlyDeleteItemConfirmation": { - "message": "Tem a certeza de que pretende eliminar este item permanentemente?" + "message": "Tem a certeza de que pretende eliminar permanentemente este item?" }, "permanentlyDeletedItem": { "message": "Item eliminado permanentemente" @@ -1528,7 +1528,7 @@ "message": "Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Confirmação de expiração do cofre" + "message": "Confirmação da ação de tempo limite" }, "enterpriseSingleSignOn": { "message": "Início de sessão único para empresas" @@ -1540,7 +1540,7 @@ "message": "Para concluir o início de sessão com SSO, por favor, defina uma palavra-passe mestra para aceder e proteger o seu cofre." }, "currentMasterPass": { - "message": "Current master password" + "message": "Palavra-passe mestra atual" }, "newMasterPass": { "message": "Nova palavra-passe mestra" @@ -1597,46 +1597,46 @@ "message": "Os Termos de utilização e a Política de privacidade não foram aceites." }, "enableBrowserIntegration": { - "message": "Allow browser integration" + "message": "Permitir a integração do navegador" }, "enableBrowserIntegrationDesc": { - "message": "Used for biometrics in browser." + "message": "Utilizado para a biometria no navegador." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Permitir a integração do navegador DuckDuckGo" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Utilize o seu cofre Bitwarden quando navegar com o DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Integração com o navegador não suportada" }, "browserIntegrationMasOnlyDesc": { - "message": "Unfortunately browser integration is only supported in the Mac App Store version for now." + "message": "Infelizmente, a integração do navegador só é suportada na versão da Mac App Store por enquanto." }, "browserIntegrationWindowsStoreDesc": { - "message": "Unfortunately browser integration is currently not supported in the Microsoft Store version." + "message": "Infelizmente, a integração do navegador não é atualmente suportada na versão da Microsoft Store." }, "browserIntegrationLinuxDesc": { "message": "Infelizmente, a integração com o navegador não é atualmente suportada na versão Linux." }, "enableBrowserIntegrationFingerprint": { - "message": "Require verification for browser integration" + "message": "Exigir verificação para a integração do navegador" }, "enableBrowserIntegrationFingerprintDesc": { - "message": "Add an additional layer of security by requiring fingerprint phrase confirmation when establishing a link between your desktop and browser. This requires user action and verification each time a connection is created." + "message": "Adicione uma camada adicional de segurança, exigindo a confirmação da frase de impressão digital ao estabelecer uma ligação entre o computador e o navegador. Isto requer a ação e a verificação do utilizador sempre que é criada uma ligação." }, "approve": { "message": "Aprovar" }, "verifyBrowserTitle": { - "message": "Verify browser connection" + "message": "Verificar a ligação do navegador" }, "verifyBrowserDesc": { - "message": "Please ensure the shown fingerprint is identical to the fingerprint showed in the browser extension." + "message": "Por favor, certifique-se de que a impressão digital apresentada é idêntica à impressão digital apresentada na extensão do navegador." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "O(A) $APPID$ quer ligar-se ao Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1645,25 +1645,25 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Gostaria de aprovar este pedido?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Se não tiver iniciado este pedido, não o aprove." }, "biometricsNotEnabledTitle": { - "message": "Biometrics not set up" + "message": "Biometria não configurada" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometrics to be set up in the settings first." + "message": "A biometria do navegador requer que a biometria do computador seja primeiro configurada nas definições." }, "personalOwnershipSubmitError": { - "message": "Due to an enterprise policy, you are restricted from saving items to your individual vault. Change the ownership option to an organization and choose from available collections." + "message": "Devido a uma política empresarial, está impedido de guardar itens no seu cofre pessoal. Altere a opção Propriedade para uma organização e escolha entre as coleções disponíveis." }, "hintEqualsPassword": { - "message": "Your password hint cannot be the same as your password." + "message": "A dica da sua palavra-passe não pode ser igual à sua palavra-passe." }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Uma política da organização está a afetar as suas opções de propriedade." }, "allSends": { "message": "Todos os Sends", @@ -1700,30 +1700,30 @@ "message": "Data de validade" }, "expirationDateDesc": { - "message": "If set, access to this Send will expire on the specified date and time.", + "message": "Se definido, o acesso a este Send expirará na data e hora especificadas.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "maxAccessCount": { - "message": "Maximum access count", + "message": "Número máximo de acessos", "description": "This text will be displayed after a Send has been accessed the maximum amount of times." }, "maxAccessCountDesc": { - "message": "If set, users will no longer be able to access this Send once the maximum access count is reached.", + "message": "Se definido, os utilizadores deixarão de poder aceder a este Send quando a contagem máxima de acessos for atingida.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current access count" + "message": "Número de acessos atual" }, "disableSend": { - "message": "Deactivate this Send so that no one can access it.", + "message": "Desative este Send para que ninguém possa aceder ao mesmo.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendPasswordDesc": { - "message": "Optionally require a password for users to access this Send.", + "message": "Opcionalmente, exigir uma palavra-passe para os utilizadores acederem a este Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendNotesDesc": { - "message": "Private notes about this Send.", + "message": "Notas privadas sobre este Send.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1735,19 +1735,19 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "textHiddenByDefault": { - "message": "When accessing the Send, hide the text by default", + "message": "Ao aceder ao Send, ocultar o texto por defeito", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send added", + "message": "Send criado", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send saved", + "message": "Send editado", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "deletedSend": { - "message": "Send deleted", + "message": "Send eliminado", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { @@ -1817,7 +1817,7 @@ "message": "Tem a certeza de que pretende remover a palavra-passe?" }, "maxAccessCountReached": { - "message": "Max access count reached" + "message": "Número máximo de acessos atingido" }, "expired": { "message": "Expirado" @@ -1856,10 +1856,10 @@ "message": "Atualizar palavra-passe mestra" }, "updateMasterPasswordWarning": { - "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." + "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." }, "updateWeakMasterPasswordWarning": { - "message": "A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." + "message": "A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora." }, "hours": { "message": "Horas" @@ -1868,7 +1868,7 @@ "message": "Minutos" }, "vaultTimeoutPolicyInEffect": { - "message": "Your organization policies have set your maximum allowed vault timeout to $HOURS$ hour(s) and $MINUTES$ minute(s).", + "message": "As políticas da sua organização definiram o tempo limite máximo permitido do cofre de $HOURS$ hora(s) e $MINUTES$ minuto(s).", "placeholders": { "hours": { "content": "$1", @@ -1881,7 +1881,7 @@ } }, "vaultTimeoutPolicyWithActionInEffect": { - "message": "Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is $HOURS$ hour(s) and $MINUTES$ minute(s). Your vault timeout action is set to $ACTION$.", + "message": "As políticas da sua organização estão a afetar o tempo limite do cofre. O tempo limite máximo permitido do cofre é de $HOURS$ hora(s) e $MINUTES$ minuto(s). A sua ação de tempo limite do cofre está definida para $ACTION$.", "placeholders": { "hours": { "content": "$1", @@ -1898,7 +1898,7 @@ } }, "vaultTimeoutActionPolicyInEffect": { - "message": "Your organization policies have set your vault timeout action to $ACTION$.", + "message": "As políticas da sua organização definiram a ação de tempo limite do cofre para $ACTION$.", "placeholders": { "action": { "content": "$1", @@ -1913,7 +1913,7 @@ "message": "Inscrição automática" }, "resetPasswordAutoEnrollInviteWarning": { - "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." + "message": "Esta organização tem uma política empresarial que o inscreverá automaticamente na redefinição de palavra-passe. A inscrição permitirá que os administradores da organização alterem a sua palavra-passe mestra." }, "vaultExportDisabled": { "message": "Exportação do cofre removida" @@ -1931,7 +1931,7 @@ "message": "Palavra-passe mestra removida" }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ is using SSO with a self-hosted key server. A master password is no longer required to log in for members of this organization.", + "message": "A $ORGANIZATION$ está a utilizar o SSO com um servidor de chaves auto-hospedado. Já não é necessária uma palavra-passe mestra para iniciar sessão para os membros desta organização.", "placeholders": { "organization": { "content": "$1", @@ -1949,7 +1949,7 @@ "message": "Saiu da organização." }, "ssoKeyConnectorError": { - "message": "Key connector error: make sure key connector is available and working correctly." + "message": "Erro no Key Connector: certifique-se de que o Key Connector está disponível e a funcionar corretamente." }, "lockAllVaults": { "message": "Bloquear todos os cofres" @@ -2003,13 +2003,13 @@ "message": "Desbloqueado" }, "generator": { - "message": "Generator" + "message": "Gerador" }, "whatWouldYouLikeToGenerate": { "message": "O que é que gostaria de gerar?" }, "passwordType": { - "message": "Password type" + "message": "Tipo de palavra-passe" }, "regenerateUsername": { "message": "Regenerar nome de utilizador" @@ -2034,16 +2034,16 @@ "message": "Use your domain's configured catch-all inbox." }, "random": { - "message": "Random" + "message": "Aleatório" }, "randomWord": { - "message": "Random word" + "message": "Palavra aleatória" }, "websiteName": { - "message": "Website name" + "message": "Nome do site" }, "service": { - "message": "Service" + "message": "Serviço" }, "allVaults": { "message": "Todos os cofres" @@ -2055,35 +2055,35 @@ "message": "Procurar no meu cofre" }, "forwardedEmail": { - "message": "Forwarded email alias" + "message": "Alias de e-mail reencaminhado" }, "forwardedEmailDesc": { - "message": "Generate an email alias with an external forwarding service." + "message": "Gerar um alias de e-mail com um serviço de reencaminhamento externo." }, "hostname": { - "message": "Hostname", + "message": "Nome de domínio", "description": "Part of a URL." }, "apiAccessToken": { - "message": "API Access Token" + "message": "Token de acesso à API" }, "apiKey": { - "message": "API key" + "message": "Chave API" }, "premiumSubcriptionRequired": { "message": "É necessária uma subscrição Premium" }, "organizationIsDisabled": { - "message": "Organization suspended" + "message": "Organização suspensa" }, "disabledOrganizationFilterError": { - "message": "Items in suspended organizations cannot be accessed. Contact your organization owner for assistance." + "message": "Não é possível aceder aos itens de organizações suspensas. Contacte o proprietário da organização para obter assistência." }, "neverLockWarning": { "message": "Tem a certeza de que deseja utilizar a opção \"Nunca\"? Ao definir as opções de bloqueio para \"Nunca\" armazena a chave de encriptação do seu cofre no seu dispositivo. Se utilizar esta opção deve assegurar-se de que mantém o seu dispositivo devidamente protegido." }, "vault": { - "message": "Vault" + "message": "Cofre" }, "loginWithMasterPassword": { "message": "Iniciar sessão com a palavra-passe mestra" @@ -2113,35 +2113,35 @@ "message": "Iniciar sessão com outro dispositivo" }, "logInInitiated": { - "message": "Log in initiated" + "message": "A preparar o início de sessão" }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Foi enviada uma notificação para o seu dispositivo." }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." + "message": "Por favor, certifique-se de que o cofre está desbloqueado e que a frase de impressão digital corresponde à do outro dispositivo." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Frase de impressão digital" }, "needAnotherOption": { - "message": "Log in with device must be set up in the settings of the Bitwarden app. Need another option?" + "message": "O início de sessão com o dispositivo deve ser ativado nas definições da aplicação Bitwarden. Necessita de outra opção?" }, "viewAllLoginOptions": { - "message": "View all login options" + "message": "Ver todas as opções de início de sessão" }, "resendNotification": { - "message": "Resend notification" + "message": "Reenviar notificação" }, "toggleCharacterCount": { - "message": "Toggle character count", + "message": "Mostrar/ocultar contagem de caracteres", "description": "'Character count' describes a feature that displays a number next to each character of the password." }, "areYouTryingtoLogin": { - "message": "Are you trying to log in?" + "message": "Está a tentar iniciar sessão?" }, "logInAttemptBy": { - "message": "Login attempt by $EMAIL$", + "message": "Tentativa de início de sessão por $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -2150,25 +2150,25 @@ } }, "deviceType": { - "message": "Device Type" + "message": "Tipo de dispositivo" }, "ipAddress": { - "message": "IP Address" + "message": "Endereço IP" }, "time": { - "message": "Time" + "message": "Tempo" }, "confirmLogIn": { - "message": "Confirm login" + "message": "Confirmar início de sessão" }, "denyLogIn": { - "message": "Deny login" + "message": "Recusar início de sessão" }, "approveLoginRequests": { - "message": "Approve login requests" + "message": "Aprovar pedidos de início de sessão" }, "logInConfirmedForEmailOnDevice": { - "message": "Login confirmed for $EMAIL$ on $DEVICE$", + "message": "Início de sessão confirmado para $EMAIL$ em $DEVICE$", "placeholders": { "email": { "content": "$1", @@ -2181,13 +2181,13 @@ } }, "youDeniedALogInAttemptFromAnotherDevice": { - "message": "You denied a login attempt from another device. If this really was you, try to log in with the device again." + "message": "Negou uma tentativa de início de sessão de outro dispositivo. Se foi realmente o caso, tente iniciar sessão com o dispositivo novamente." }, "justNow": { - "message": "Just now" + "message": "Agora mesmo" }, "requestedXMinutesAgo": { - "message": "Requested $MINUTES$ minutes ago", + "message": "Pedido há $MINUTES$ minutos", "placeholders": { "minutes": { "content": "$1", @@ -2196,16 +2196,16 @@ } }, "loginRequestHasAlreadyExpired": { - "message": "Login request has already expired." + "message": "O pedido de início de sessão já expirou." }, "thisRequestIsNoLongerValid": { - "message": "This request is no longer valid." + "message": "Este pedido já não é válido." }, "approveLoginRequestDesc": { - "message": "Use this device to approve login requests made from other devices." + "message": "Utilize este dispositivo para aprovar pedidos de início de sessão efetuados a partir de outros dispositivos." }, "confirmLoginAtemptForMail": { - "message": "Confirm login attempt for $EMAIL$", + "message": "Confirmar tentativa de início de sessão de $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -2214,31 +2214,31 @@ } }, "logInRequested": { - "message": "Log in requested" + "message": "Início de sessão pedido" }, "exposedMasterPassword": { - "message": "Exposed Master Password" + "message": "Palavra-passe mestra exposta" }, "exposedMasterPasswordDesc": { - "message": "Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?" + "message": "Palavra-passe encontrada numa violação de dados. Utilize uma palavra-passe única para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe exposta?" }, "weakAndExposedMasterPassword": { - "message": "Weak and Exposed Master Password" + "message": "Palavra-passe mestra fraca e exposta" }, "weakAndBreachedMasterPasswordDesc": { - "message": "Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?" + "message": "Palavra-passe fraca identificada e encontrada numa violação de dados. Utilize uma palavra-passe forte e única para proteger a sua conta. Tem a certeza de que pretende utilizar esta palavra-passe?" }, "checkForBreaches": { - "message": "Check known data breaches for this password" + "message": "Verificar violações de dados conhecidas para esta palavra-passe" }, "important": { - "message": "Important:" + "message": "Importante:" }, "masterPasswordHint": { - "message": "Your master password cannot be recovered if you forget it!" + "message": "A sua palavra-passe mestra não pode ser recuperada se a esquecer!" }, "characterMinimum": { - "message": "$LENGTH$ character minimum", + "message": "$LENGTH$ caracteres no mínimo", "placeholders": { "length": { "content": "$1", @@ -2250,7 +2250,7 @@ "message": "O Bitwarden recomenda a atualização das suas definições biométricas para exigir a sua palavra-passe mestra (ou PIN) no primeiro desbloqueio. Gostaria de atualizar as suas definições agora?" }, "windowsBiometricUpdateWarningTitle": { - "message": "Recommended Settings Update" + "message": "Atualização de definições recomendadas" }, "region": { "message": "Região" @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Auto-hospedado" + }, + "accessDenied": { + "message": "Acesso negado. Não tem permissão para visualizar esta página." } } diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index c5fc551e181..e0babc049c9 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index e940c976866..0dfccf048be 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Собственный хостинг" + }, + "accessDenied": { + "message": "Доступ запрещен. У вас нет разрешения на просмотр этой страницы." } } diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index e8a79147aa5..7fe72ca1226 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index 773be1cd07f..30418ea8ca6 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Vlastný hosting" + }, + "accessDenied": { + "message": "Prístup zamietnutý. Nemáte oprávnenie na zobrazenie tejto stránky." } } diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index 4bccab8c51c..5d4f40ed148 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index fb225b1763d..cea5d01ff98 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Личан хостинг" + }, + "accessDenied": { + "message": "Одбијен приступ. Немате дозволу да видите ову страницу." } } diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index 247f6464081..8dab78a718b 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/te/messages.json b/apps/desktop/src/locales/te/messages.json index fbc7635f3b3..ed828fa2255 100644 --- a/apps/desktop/src/locales/te/messages.json +++ b/apps/desktop/src/locales/te/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index e68d7d13c10..45c05455bae 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index 294ab336c35..9e98dbee2c3 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Barındırılan" + }, + "accessDenied": { + "message": "Erişim engellendi. Bu sayfayı görüntüleme iznine sahip değilsiniz." } } diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index 4e4c214ed9b..5823480bdea 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Власне розміщення" + }, + "accessDenied": { + "message": "Доступ заборонено. У вас немає дозволу на перегляд цієї сторінки." } } diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index e4fcbede490..89b4d9e3ca0 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index 8184e19b768..f455937ba88 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -2074,10 +2074,10 @@ "message": "需要高级版订阅" }, "organizationIsDisabled": { - "message": "组织已暂停" + "message": "组织已停用" }, "disabledOrganizationFilterError": { - "message": "无法访问已暂停组织中的项目。请联系您的组织所有者获取帮助。" + "message": "无法访问已停用组织中的项目。请联系您的组织所有者获取协助。" }, "neverLockWarning": { "message": "确定要使用「从不」选项吗?将锁定选项设置为「从不」会将密码库的加密密钥存储在您的设备上。如果使用此选项,应确保您的设备得到妥善的保护。" @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "自托管" + }, + "accessDenied": { + "message": "访问被拒绝。您没有权限查看此页面。" } } diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index a5df7cdde51..44252535210 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -2265,5 +2265,8 @@ }, "selfHosted": { "message": "Self-hosted" + }, + "accessDenied": { + "message": "Access denied. You do not have permission to view this page." } } diff --git a/apps/desktop/src/vault/app/vault/add-edit.component.html b/apps/desktop/src/vault/app/vault/add-edit.component.html index c8595c816ea..c26078394ad 100644 --- a/apps/desktop/src/vault/app/vault/add-edit.component.html +++ b/apps/desktop/src/vault/app/vault/add-edit.component.html @@ -148,6 +148,7 @@ class="monospaced" type="{{ showCardNumber ? 'text' : 'password' }}" name="Card.Number" + (input)="onCardNumberChange()" [(ngModel)]="cipher.card.number" appInputVerbatim [readonly]="!cipher.edit && editMode" diff --git a/apps/desktop/src/vault/app/vault/add-edit.component.ts b/apps/desktop/src/vault/app/vault/add-edit.component.ts index d06f37dc08d..aa7eba32838 100644 --- a/apps/desktop/src/vault/app/vault/add-edit.component.ts +++ b/apps/desktop/src/vault/app/vault/add-edit.component.ts @@ -5,7 +5,6 @@ import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; import { AddEditComponent as BaseAddEditComponent } from "@bitwarden/angular/vault/components/add-edit.component"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; @@ -16,6 +15,7 @@ import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/pl import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction"; import { PasswordRepromptService } from "@bitwarden/common/vault/abstractions/password-reprompt.service"; diff --git a/apps/desktop/src/vault/app/vault/collections.component.ts b/apps/desktop/src/vault/app/vault/collections.component.ts index 1b596c9c6a8..b9ad3ecfcf2 100644 --- a/apps/desktop/src/vault/app/vault/collections.component.ts +++ b/apps/desktop/src/vault/app/vault/collections.component.ts @@ -1,11 +1,11 @@ import { Component } from "@angular/core"; import { CollectionsComponent as BaseCollectionsComponent } from "@bitwarden/angular/admin-console/components/collections.component"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; @Component({ selector: "app-vault-collections", diff --git a/apps/desktop/src/vault/app/vault/share.component.ts b/apps/desktop/src/vault/app/vault/share.component.ts index e07a100d882..99d81f44a15 100644 --- a/apps/desktop/src/vault/app/vault/share.component.ts +++ b/apps/desktop/src/vault/app/vault/share.component.ts @@ -2,12 +2,12 @@ import { Component } from "@angular/core"; import { ModalRef } from "@bitwarden/angular/components/modal/modal.ref"; import { ShareComponent as BaseShareComponent } from "@bitwarden/angular/components/share.component"; -import { CollectionService } from "@bitwarden/common/admin-console/abstractions/collection.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { CollectionService } from "@bitwarden/common/vault/abstractions/collection.service"; @Component({ selector: "app-vault-share", diff --git a/apps/desktop/src/admin-console/vault-filters/collection-filter.component.html b/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html similarity index 100% rename from apps/desktop/src/admin-console/vault-filters/collection-filter.component.html rename to apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.html diff --git a/apps/desktop/src/admin-console/vault-filters/collection-filter.component.ts b/apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.ts similarity index 100% rename from apps/desktop/src/admin-console/vault-filters/collection-filter.component.ts rename to apps/desktop/src/vault/app/vault/vault-filter/filters/collection-filter.component.ts diff --git a/apps/desktop/src/admin-console/vault-filters/organization-filter.component.html b/apps/desktop/src/vault/app/vault/vault-filter/filters/organization-filter.component.html similarity index 100% rename from apps/desktop/src/admin-console/vault-filters/organization-filter.component.html rename to apps/desktop/src/vault/app/vault/vault-filter/filters/organization-filter.component.html diff --git a/apps/desktop/src/admin-console/vault-filters/organization-filter.component.ts b/apps/desktop/src/vault/app/vault/vault-filter/filters/organization-filter.component.ts similarity index 100% rename from apps/desktop/src/admin-console/vault-filters/organization-filter.component.ts rename to apps/desktop/src/vault/app/vault/vault-filter/filters/organization-filter.component.ts diff --git a/apps/desktop/src/vault/app/vault/vault-filter/vault-filter.module.ts b/apps/desktop/src/vault/app/vault/vault-filter/vault-filter.module.ts index ca7fab0f9c3..fb6706bef1c 100644 --- a/apps/desktop/src/vault/app/vault/vault-filter/vault-filter.module.ts +++ b/apps/desktop/src/vault/app/vault/vault-filter/vault-filter.module.ts @@ -5,10 +5,9 @@ import { JslibModule } from "@bitwarden/angular/jslib.module"; import { DeprecatedVaultFilterService as DeprecatedVaultFilterServiceAbstraction } from "@bitwarden/angular/vault/abstractions/deprecated-vault-filter.service"; import { VaultFilterService } from "@bitwarden/angular/vault/vault-filter/services/vault-filter.service"; -import { CollectionFilterComponent } from "../../../../admin-console/vault-filters/collection-filter.component"; -import { OrganizationFilterComponent } from "../../../../admin-console/vault-filters/organization-filter.component"; - +import { CollectionFilterComponent } from "./filters/collection-filter.component"; import { FolderFilterComponent } from "./filters/folder-filter.component"; +import { OrganizationFilterComponent } from "./filters/organization-filter.component"; import { StatusFilterComponent } from "./filters/status-filter.component"; import { TypeFilterComponent } from "./filters/type-filter.component"; import { VaultFilterComponent } from "./vault-filter.component"; diff --git a/apps/desktop/webpack.main.js b/apps/desktop/webpack.main.js index 52240e84e3e..efd1de20d13 100644 --- a/apps/desktop/webpack.main.js +++ b/apps/desktop/webpack.main.js @@ -74,6 +74,7 @@ const main = { { from: "./src/images", to: "images" }, { from: "./src/locales", to: "locales" }, "../../node_modules/argon2-browser/dist/argon2.wasm", + "../../node_modules/argon2-browser/dist/argon2-simd.wasm", ], }), new EnvironmentPlugin({ diff --git a/apps/web/config/euprd.json b/apps/web/config/euprd.json new file mode 100644 index 00000000000..3813074b7cf --- /dev/null +++ b/apps/web/config/euprd.json @@ -0,0 +1,11 @@ +{ + "urls": { + "icons": "https://icons.bitwarden.net", + "notifications": "https://notifications.bitwarden.net", + "scim": "https://scim.bitwarden.net" + }, + "flags": { + "secretsManager": true, + "showPasswordless": true + } +} diff --git a/apps/web/config/poc.json b/apps/web/config/poc.json deleted file mode 100644 index 0d2f4d2ec46..00000000000 --- a/apps/web/config/poc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "urls": { - "icons": "https://icons.poc2.bitwarden.pw", - "notifications": "https://notifications.poc2.bitwarden.pw", - "scim": "https://scim.poc2.bitwarden.pw" - }, - "flags": { - "secretsManager": true, - "showPasswordless": true - } -} diff --git a/apps/web/package.json b/apps/web/package.json index c50b4df2a85..1aed639fdcc 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -10,7 +10,7 @@ "build:bit:dev:analyze": "cross-env LOGGING=false webpack -c ../../bitwarden_license/bit-web/webpack.config.js --profile --json > stats.json && npx webpack-bundle-analyzer stats.json build/", "build:bit:dev:watch": "cross-env ENV=development npm run build:bit:watch", "build:bit:qa": "cross-env NODE_ENV=production ENV=qa npm run build:bit", - "build:bit:poc": "cross-env NODE_ENV=production ENV=poc npm run build:bit", + "build:bit:euprd": "cross-env NODE_ENV=production ENV=euprd npm run build:bit", "build:bit:eudevtest": "cross-env NODE_ENV=production ENV=eudevtest npm run build:bit", "build:bit:cloud": "cross-env NODE_ENV=production ENV=cloud npm run build:bit", "build:oss:selfhost:watch": "cross-env ENV=selfhosted npm run build:oss:watch", diff --git a/apps/web/src/app/admin-console/icons/devices.ts b/apps/web/src/app/admin-console/icons/devices.ts new file mode 100644 index 00000000000..348c836c4b7 --- /dev/null +++ b/apps/web/src/app/admin-console/icons/devices.ts @@ -0,0 +1,17 @@ +import { svgIcon } from "@bitwarden/components"; + +export const Devices = svgIcon` + + + + + + + + + + + + + +`; diff --git a/apps/web/src/app/admin-console/icons/index.ts b/apps/web/src/app/admin-console/icons/index.ts new file mode 100644 index 00000000000..e0c2c124af1 --- /dev/null +++ b/apps/web/src/app/admin-console/icons/index.ts @@ -0,0 +1 @@ +export * from "./devices"; diff --git a/apps/web/src/app/admin-console/organizations/core/services/group/group.service.ts b/apps/web/src/app/admin-console/organizations/core/services/group/group.service.ts index 772fbd3cf48..680c358b1fb 100644 --- a/apps/web/src/app/admin-console/organizations/core/services/group/group.service.ts +++ b/apps/web/src/app/admin-console/organizations/core/services/group/group.service.ts @@ -11,29 +11,11 @@ import { GroupRequest } from "./requests/group.request"; import { OrganizationGroupBulkRequest } from "./requests/organization-group-bulk.request"; import { GroupDetailsResponse, GroupResponse } from "./responses/group.response"; -@Injectable({ providedIn: CoreOrganizationModule }) +@Injectable({ + providedIn: "root", +}) export class GroupService { - constructor(private apiService: ApiService) {} - - async delete(orgId: string, groupId: string): Promise { - await this.apiService.send( - "DELETE", - "/organizations/" + orgId + "/groups/" + groupId, - null, - true, - false - ); - } - - async deleteMany(orgId: string, groupIds: string[]): Promise { - await this.apiService.send( - "DELETE", - "/organizations/" + orgId + "/groups", - new OrganizationGroupBulkRequest(groupIds), - true, - true - ); - } + constructor(protected apiService: ApiService) {} async get(orgId: string, groupId: string): Promise { const r = await this.apiService.send( @@ -60,6 +42,33 @@ export class GroupService { return listResponse.data?.map((gr) => GroupView.fromResponse(gr)) ?? []; } +} + +@Injectable({ providedIn: CoreOrganizationModule }) +export class InternalGroupService extends GroupService { + constructor(protected apiService: ApiService) { + super(apiService); + } + + async delete(orgId: string, groupId: string): Promise { + await this.apiService.send( + "DELETE", + "/organizations/" + orgId + "/groups/" + groupId, + null, + true, + false + ); + } + + async deleteMany(orgId: string, groupIds: string[]): Promise { + await this.apiService.send( + "DELETE", + "/organizations/" + orgId + "/groups", + new OrganizationGroupBulkRequest(groupIds), + true, + true + ); + } async save(group: GroupView): Promise { const request = new GroupRequest(); diff --git a/apps/web/src/app/admin-console/organizations/core/services/index.ts b/apps/web/src/app/admin-console/organizations/core/services/index.ts index 1e670faccd6..627cb2416ae 100644 --- a/apps/web/src/app/admin-console/organizations/core/services/index.ts +++ b/apps/web/src/app/admin-console/organizations/core/services/index.ts @@ -1,3 +1,2 @@ export * from "./group/group.service"; -export * from "./collection-admin.service"; export * from "./user-admin.service"; diff --git a/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts b/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts index 2d7635c5c6c..4e83d76f7dd 100644 --- a/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts +++ b/apps/web/src/app/admin-console/organizations/core/services/user-admin.service.ts @@ -83,6 +83,7 @@ export class UserAdminService { })); view.groups = u.groups; view.accessSecretsManager = u.accessSecretsManager; + view.hasMasterPassword = u.hasMasterPassword; return view; }); diff --git a/apps/web/src/app/admin-console/organizations/core/views/index.ts b/apps/web/src/app/admin-console/organizations/core/views/index.ts index e7ba6859901..ef14753c48a 100644 --- a/apps/web/src/app/admin-console/organizations/core/views/index.ts +++ b/apps/web/src/app/admin-console/organizations/core/views/index.ts @@ -1,5 +1,4 @@ export * from "./collection-access-selection.view"; -export * from "./collection-admin.view"; export * from "./group.view"; export * from "./organization-user.view"; export * from "./organization-user-admin-view"; diff --git a/apps/web/src/app/admin-console/organizations/core/views/organization-user-admin-view.ts b/apps/web/src/app/admin-console/organizations/core/views/organization-user-admin-view.ts index 11bf026967b..3bcb4767a8d 100644 --- a/apps/web/src/app/admin-console/organizations/core/views/organization-user-admin-view.ts +++ b/apps/web/src/app/admin-console/organizations/core/views/organization-user-admin-view.ts @@ -16,6 +16,7 @@ export class OrganizationUserAdminView { accessAll: boolean; permissions: PermissionsApi; resetPasswordEnrolled: boolean; + hasMasterPassword: boolean; collections: CollectionAccessSelectionView[] = []; groups: string[] = []; diff --git a/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts b/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts index 16b3a601501..f723fcc32ef 100644 --- a/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts +++ b/apps/web/src/app/admin-console/organizations/core/views/organization-user.view.ts @@ -20,6 +20,7 @@ export class OrganizationUserView { avatarColor: string; twoFactorEnabled: boolean; usesKeyConnector: boolean; + hasMasterPassword: boolean; collections: CollectionAccessSelectionView[] = []; groups: string[] = []; diff --git a/apps/web/src/app/admin-console/organizations/manage/entity-events.component.html b/apps/web/src/app/admin-console/organizations/manage/entity-events.component.html index 85c9d474920..8d8cfad34e9 100644 --- a/apps/web/src/app/admin-console/organizations/manage/entity-events.component.html +++ b/apps/web/src/app/admin-console/organizations/manage/entity-events.component.html @@ -1,118 +1,89 @@ -