mirror of
https://github.com/dani-garcia/bw_web_builds.git
synced 2025-04-21 16:13:37 +03:00
Merge pull request #189 from stefan0xC/update-to-v2025.1.1
update web-vault to v2025.1.1
This commit is contained in:
commit
2b56dc7013
2 changed files with 795 additions and 2 deletions
|
@ -23,8 +23,8 @@ RUN node --version && npm --version
|
|||
# Can be a tag, release, but prefer a commit hash because it's not changeable
|
||||
# https://github.com/bitwarden/clients/commit/${VAULT_VERSION}
|
||||
#
|
||||
# Using https://github.com/bitwarden/clients/releases/tag/web-v2025.1.0
|
||||
ARG VAULT_VERSION=4fb35dbdf11dc781ffe6cdef1173f821fa6ebeb3
|
||||
# Using https://github.com/bitwarden/clients/releases/tag/web-v2025.1.1
|
||||
ARG VAULT_VERSION=06b60c6853dc6c510eaf5ee68d547d02baee8934
|
||||
ENV VAULT_VERSION=$VAULT_VERSION
|
||||
ENV VAULT_FOLDER=bw_clients
|
||||
ENV CHECKOUT_TAGS=false
|
||||
|
|
793
patches/v2025.1.1.patch
Normal file
793
patches/v2025.1.1.patch
Normal file
|
@ -0,0 +1,793 @@
|
|||
diff --git a/apps/web/config/base.json b/apps/web/config/base.json
|
||||
index e64ef6ebeb..b41ca4219d 100644
|
||||
--- a/apps/web/config/base.json
|
||||
+++ b/apps/web/config/base.json
|
||||
@@ -1,11 +1,5 @@
|
||||
{
|
||||
"urls": {},
|
||||
- "stripeKey": "pk_test_KPoCfZXu7mznb9uSCPZ2JpTD",
|
||||
- "braintreeKey": "sandbox_r72q8jq6_9pnxkwm75f87sdc2",
|
||||
- "paypal": {
|
||||
- "businessId": "AD3LAUZSNVPJY",
|
||||
- "buttonAction": "https://www.sandbox.paypal.com/cgi-bin/webscr"
|
||||
- },
|
||||
"dev": {
|
||||
"port": 8080,
|
||||
"allowedHosts": "auto"
|
||||
diff --git a/apps/web/package.json b/apps/web/package.json
|
||||
index 73ecd8c3cb..bf75ca68ff 100644
|
||||
--- a/apps/web/package.json
|
||||
+++ b/apps/web/package.json
|
||||
@@ -3,11 +3,8 @@
|
||||
"version": "2025.1.1",
|
||||
"scripts": {
|
||||
"build:oss": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
|
||||
- "build:bit": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
|
||||
"build:oss:watch": "webpack serve",
|
||||
- "build:bit:watch": "webpack serve -c ../../bitwarden_license/bit-web/webpack.config.js",
|
||||
"build:bit:dev": "cross-env ENV=development npm run build:bit",
|
||||
- "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 NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:bit:watch",
|
||||
"build:bit:qa": "cross-env NODE_ENV=production ENV=qa npm run build:bit",
|
||||
"build:bit:euprd": "cross-env NODE_ENV=production ENV=euprd npm run build:bit",
|
||||
diff --git a/apps/web/src/app/admin-console/organizations/create/organization-information.component.html b/apps/web/src/app/admin-console/organizations/create/organization-information.component.html
|
||||
index e0a8006081..789efd9264 100644
|
||||
--- a/apps/web/src/app/admin-console/organizations/create/organization-information.component.html
|
||||
+++ b/apps/web/src/app/admin-console/organizations/create/organization-information.component.html
|
||||
@@ -12,7 +12,7 @@
|
||||
<input bitInput type="text" formControlName="name" />
|
||||
</bit-form-field>
|
||||
<bit-form-field class="tw-w-1/2">
|
||||
- <bit-label>{{ "billingEmail" | i18n }}</bit-label>
|
||||
+ <bit-label>{{ "email" | i18n }}</bit-label>
|
||||
<input bitInput type="email" formControlName="billingEmail" />
|
||||
</bit-form-field>
|
||||
<bit-form-field class="tw-w-1/2" *ngIf="isProvider">
|
||||
diff --git a/apps/web/src/app/admin-console/organizations/layouts/organization-layout.component.ts b/apps/web/src/app/admin-console/organizations/layouts/organization-layout.component.ts
|
||||
index 0b024817ed..520f60fa32 100644
|
||||
--- a/apps/web/src/app/admin-console/organizations/layouts/organization-layout.component.ts
|
||||
+++ b/apps/web/src/app/admin-console/organizations/layouts/organization-layout.component.ts
|
||||
@@ -139,6 +139,7 @@ export class OrganizationLayoutComponent implements OnInit {
|
||||
}
|
||||
|
||||
canShowBillingTab(organization: Organization): boolean {
|
||||
+ return false; // disable billing tab in Vaultwarden
|
||||
return canAccessBillingTab(organization);
|
||||
}
|
||||
|
||||
diff --git a/apps/web/src/app/admin-console/organizations/members/members.component.ts b/apps/web/src/app/admin-console/organizations/members/members.component.ts
|
||||
index 703f187b22..21ecccee6e 100644
|
||||
--- a/apps/web/src/app/admin-console/organizations/members/members.component.ts
|
||||
+++ b/apps/web/src/app/admin-console/organizations/members/members.component.ts
|
||||
@@ -193,11 +193,7 @@ export class MembersComponent extends BaseMembersComponent<OrganizationUserView>
|
||||
.find((p) => p.organizationId === this.organization.id);
|
||||
this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled;
|
||||
|
||||
- const billingMetadata = await this.billingApiService.getOrganizationBillingMetadata(
|
||||
- this.organization.id,
|
||||
- );
|
||||
-
|
||||
- this.orgIsOnSecretsManagerStandalone = billingMetadata.isOnSecretsManagerStandalone;
|
||||
+ this.orgIsOnSecretsManagerStandalone = false; // don't get billing metadata
|
||||
|
||||
await this.load();
|
||||
|
||||
diff --git a/apps/web/src/app/admin-console/organizations/settings/account.component.html b/apps/web/src/app/admin-console/organizations/settings/account.component.html
|
||||
index b3fac56c0b..796a1a817a 100644
|
||||
--- a/apps/web/src/app/admin-console/organizations/settings/account.component.html
|
||||
+++ b/apps/web/src/app/admin-console/organizations/settings/account.component.html
|
||||
@@ -16,7 +16,7 @@
|
||||
<input bitInput id="orgName" type="text" formControlName="orgName" />
|
||||
</bit-form-field>
|
||||
<bit-form-field>
|
||||
- <bit-label>{{ "billingEmail" | i18n }}</bit-label>
|
||||
+ <bit-label>{{ "email" | i18n }}</bit-label>
|
||||
<input bitInput id="billingEmail" formControlName="billingEmail" type="email" />
|
||||
</bit-form-field>
|
||||
</div>
|
||||
diff --git a/apps/web/src/app/admin-console/organizations/settings/account.component.ts b/apps/web/src/app/admin-console/organizations/settings/account.component.ts
|
||||
index 0cf8c24d46..6bf239a37e 100644
|
||||
--- a/apps/web/src/app/admin-console/organizations/settings/account.component.ts
|
||||
+++ b/apps/web/src/app/admin-console/organizations/settings/account.component.ts
|
||||
@@ -86,7 +86,7 @@ export class AccountComponent implements OnInit, OnDestroy {
|
||||
) {}
|
||||
|
||||
async ngOnInit() {
|
||||
- this.selfHosted = this.platformUtilsService.isSelfHost();
|
||||
+ this.selfHosted = false; // set to false so we can rename organizations
|
||||
|
||||
this.route.params
|
||||
.pipe(
|
||||
@@ -179,6 +179,7 @@ export class AccountComponent implements OnInit, OnDestroy {
|
||||
};
|
||||
|
||||
submitCollectionManagement = async () => {
|
||||
+ return; // flexible collections are not supported by Vaultwarden
|
||||
const request = new OrganizationCollectionManagementUpdateRequest();
|
||||
request.limitCollectionCreation =
|
||||
this.collectionManagementFormGroup.value.limitCollectionCreation;
|
||||
diff --git a/apps/web/src/app/app.component.html b/apps/web/src/app/app.component.html
|
||||
index a39c045e0e..9d72e609b4 100644
|
||||
--- a/apps/web/src/app/app.component.html
|
||||
+++ b/apps/web/src/app/app.component.html
|
||||
@@ -3,7 +3,7 @@
|
||||
when the body has the layout_frontend class. Having this match the index allows for a duplicative yet seamless
|
||||
loading state here for process reloading. -->
|
||||
<div class="tw-p-8 tw-flex">
|
||||
- <img class="new-logo-themed" alt="Bitwarden" />
|
||||
+ <img class="new-logo-themed" alt="Vaultwarden" />
|
||||
<div class="spinner-container tw-justify-center">
|
||||
<i
|
||||
class="bwi bwi-spinner bwi-spin bwi-3x tw-text-muted"
|
||||
diff --git a/apps/web/src/app/app.component.ts b/apps/web/src/app/app.component.ts
|
||||
index ee9f87bc2c..90ded63589 100644
|
||||
--- a/apps/web/src/app/app.component.ts
|
||||
+++ b/apps/web/src/app/app.component.ts
|
||||
@@ -210,6 +210,10 @@ export class AppComponent implements OnDestroy, OnInit {
|
||||
break;
|
||||
}
|
||||
case "showToast":
|
||||
+ if (typeof message.text === "string" && typeof crypto.subtle === "undefined") {
|
||||
+ message.title = "This browser requires HTTPS to use the web vault";
|
||||
+ message.text = "Check the Vaultwarden wiki for details on how to enable it";
|
||||
+ }
|
||||
this.toastService._showToast(message);
|
||||
break;
|
||||
case "convertAccountToKeyConnector":
|
||||
diff --git a/apps/web/src/app/auth/settings/change-password.component.html b/apps/web/src/app/auth/settings/change-password.component.html
|
||||
index 91144fdfc1..d3dc4410c9 100644
|
||||
--- a/apps/web/src/app/auth/settings/change-password.component.html
|
||||
+++ b/apps/web/src/app/auth/settings/change-password.component.html
|
||||
@@ -125,5 +125,3 @@
|
||||
{{ "changeMasterPassword" | i18n }}
|
||||
</button>
|
||||
</form>
|
||||
-
|
||||
-<app-webauthn-login-settings></app-webauthn-login-settings>
|
||||
diff --git a/apps/web/src/app/auth/settings/two-factor/two-factor-setup-authenticator.component.ts b/apps/web/src/app/auth/settings/two-factor/two-factor-setup-authenticator.component.ts
|
||||
index de187d2c33..c33f49fd70 100644
|
||||
--- a/apps/web/src/app/auth/settings/two-factor/two-factor-setup-authenticator.component.ts
|
||||
+++ b/apps/web/src/app/auth/settings/two-factor/two-factor-setup-authenticator.component.ts
|
||||
@@ -189,11 +189,11 @@ export class TwoFactorSetupAuthenticatorComponent
|
||||
new window.QRious({
|
||||
element: document.getElementById("qr"),
|
||||
value:
|
||||
- "otpauth://totp/Bitwarden:" +
|
||||
+ "otpauth://totp/Vaultwarden:" +
|
||||
Utils.encodeRFC3986URIComponent(email) +
|
||||
"?secret=" +
|
||||
encodeURIComponent(this.key) +
|
||||
- "&issuer=Bitwarden",
|
||||
+ "&issuer=Vaultwarden",
|
||||
size: 160,
|
||||
});
|
||||
}
|
||||
diff --git a/apps/web/src/app/billing/organizations/organization-billing-history-view.component.ts b/apps/web/src/app/billing/organizations/organization-billing-history-view.component.ts
|
||||
index d533badabf..6512ecbd13 100644
|
||||
--- a/apps/web/src/app/billing/organizations/organization-billing-history-view.component.ts
|
||||
+++ b/apps/web/src/app/billing/organizations/organization-billing-history-view.component.ts
|
||||
@@ -54,6 +54,7 @@ export class OrgBillingHistoryViewComponent implements OnInit, OnDestroy {
|
||||
|
||||
this.loading = true;
|
||||
|
||||
+ /* disable billing history
|
||||
const openInvoicesPromise = this.organizationBillingApiService.getBillingInvoices(
|
||||
this.organizationId,
|
||||
"open",
|
||||
@@ -87,6 +88,7 @@ export class OrgBillingHistoryViewComponent implements OnInit, OnDestroy {
|
||||
openInvoices.length <= pageSize ||
|
||||
paidInvoices.length <= pageSize ||
|
||||
transactions.length <= pageSize;
|
||||
+ */
|
||||
|
||||
this.loading = false;
|
||||
}
|
||||
diff --git a/apps/web/src/app/billing/organizations/organization-plans.component.html b/apps/web/src/app/billing/organizations/organization-plans.component.html
|
||||
index d37f95e3aa..b85be23af4 100644
|
||||
--- a/apps/web/src/app/billing/organizations/organization-plans.component.html
|
||||
+++ b/apps/web/src/app/billing/organizations/organization-plans.component.html
|
||||
@@ -6,7 +6,7 @@
|
||||
></i>
|
||||
<span class="tw-sr-only">{{ "loading" | i18n }}</span>
|
||||
</ng-container>
|
||||
-<ng-container *ngIf="createOrganization && selfHosted">
|
||||
+<ng-container *ngIf="createOrganization && false">
|
||||
<ng-container *ngIf="!(useLicenseUploaderComponent$ | async)">
|
||||
<p bitTypography="body1">{{ "uploadLicenseFileOrg" | i18n }}</p>
|
||||
<form [formGroup]="selfHostedForm" [bitSubmit]="submit">
|
||||
@@ -40,12 +40,7 @@
|
||||
(onLicenseFileUploaded)="onLicenseFileUploaded($event)"
|
||||
/>
|
||||
</ng-container>
|
||||
-<form
|
||||
- [formGroup]="formGroup"
|
||||
- [bitSubmit]="submit"
|
||||
- *ngIf="!loading && !selfHosted && this.passwordManagerPlans && this.secretsManagerPlans"
|
||||
- class="tw-pt-6"
|
||||
->
|
||||
+<form [formGroup]="formGroup" [bitSubmit]="submit" *ngIf="!loading" class="tw-pt-6">
|
||||
<bit-section [ngClass]="{ 'tw-hidden': !createOrganization }">
|
||||
<app-org-info
|
||||
(changedBusinessOwned)="changedOwnedBusiness()"
|
||||
diff --git a/apps/web/src/app/billing/organizations/organization-plans.component.ts b/apps/web/src/app/billing/organizations/organization-plans.component.ts
|
||||
index 94e8637e8a..d67491ee0f 100644
|
||||
--- a/apps/web/src/app/billing/organizations/organization-plans.component.ts
|
||||
+++ b/apps/web/src/app/billing/organizations/organization-plans.component.ts
|
||||
@@ -190,13 +190,12 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
|
||||
if (this.organizationId) {
|
||||
this.organization = await this.organizationService.get(this.organizationId);
|
||||
- this.billing = await this.organizationApiService.getBilling(this.organizationId);
|
||||
- this.sub = await this.organizationApiService.getSubscription(this.organizationId);
|
||||
- this.taxInformation = await this.organizationApiService.getTaxInfo(this.organizationId);
|
||||
- } else if (!this.selfHosted) {
|
||||
- this.taxInformation = await this.apiService.getTaxInfo();
|
||||
+ this.billing = null; // no billing in Vaultwarden
|
||||
+ this.sub = null; // no subscriptions in Vaultwarden;
|
||||
+ this.taxInformation = null; // no taxes in Vaultwarden;
|
||||
}
|
||||
|
||||
+ /* no need to ask /api/plans because Vaultwarden only supports the free plan
|
||||
if (!this.selfHosted) {
|
||||
const plans = await this.apiService.getPlans();
|
||||
this.passwordManagerPlans = plans.data.filter((plan) => !!plan.PasswordManager);
|
||||
@@ -232,6 +231,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
this.plan = providerDefaultPlan.type;
|
||||
this.productTier = providerDefaultPlan.productTier;
|
||||
}
|
||||
+ end of asking /api/plans in Vaultwarden */
|
||||
|
||||
if (!this.createOrganization) {
|
||||
this.upgradeFlowPrefillForm();
|
||||
@@ -316,6 +316,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
get selectableProducts() {
|
||||
+ return null; // there are no products to select in Vaultwarden
|
||||
if (this.acceptingSponsorship) {
|
||||
const familyPlan = this.passwordManagerPlans.find(
|
||||
(plan) => plan.type === PlanType.FamiliesAnnually,
|
||||
@@ -347,6 +348,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
get selectablePlans() {
|
||||
+ return null; // no plans to select in Vaultwarden
|
||||
const selectedProductTierType = this.formGroup.controls.productTier.value;
|
||||
const result =
|
||||
this.passwordManagerPlans?.filter(
|
||||
@@ -477,6 +479,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
get planOffersSecretsManager() {
|
||||
+ return false; // no support for secrets manager in Vaultwarden
|
||||
return this.selectedSecretsManagerPlan != null;
|
||||
}
|
||||
|
||||
@@ -485,6 +488,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
changedProduct() {
|
||||
+ return; // no choice of products in Vaultwarden
|
||||
const selectedPlan = this.selectablePlans[0];
|
||||
|
||||
this.setPlanType(selectedPlan.type);
|
||||
@@ -624,9 +628,8 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
const collectionCt = collection.encryptedString;
|
||||
const orgKeys = await this.keyService.makeKeyPair(orgKey[1]);
|
||||
|
||||
- orgId = this.selfHosted
|
||||
- ? await this.createSelfHosted(key, collectionCt, orgKeys)
|
||||
- : await this.createCloudHosted(key, collectionCt, orgKeys, orgKey[1]);
|
||||
+ // always use createCloudHosted() to disable license file upload
|
||||
+ orgId = await this.createCloudHosted(key, collectionCt, orgKeys, orgKey[1]);
|
||||
|
||||
this.toastService.showToast({
|
||||
variant: "success",
|
||||
@@ -787,7 +790,9 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
request.billingEmail = this.formGroup.controls.billingEmail.value;
|
||||
request.initiationPath = "New organization creation in-product";
|
||||
request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);
|
||||
+ request.planType = PlanType.Free; // always select the free plan in Vaultwarden
|
||||
|
||||
+ /* there is no plan to select in Vaultwarden
|
||||
if (this.selectedPlan.type === PlanType.Free) {
|
||||
request.planType = PlanType.Free;
|
||||
} else {
|
||||
@@ -819,6 +824,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
|
||||
// Secrets Manager
|
||||
this.buildSecretsManagerRequest(request);
|
||||
+ end plan selection and no support for secret manager in Vaultwarden */
|
||||
|
||||
if (this.hasProvider) {
|
||||
const providerRequest = new ProviderOrganizationCreateRequest(
|
||||
@@ -898,6 +904,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
private upgradeFlowPrefillForm() {
|
||||
+ return; // Vaultwarden only supports free plan
|
||||
if (this.acceptingSponsorship) {
|
||||
this.formGroup.controls.productTier.setValue(ProductTierType.Families);
|
||||
this.changedProduct();
|
||||
diff --git a/apps/web/src/app/core/router.service.ts b/apps/web/src/app/core/router.service.ts
|
||||
index ff0aea47b9..21ec31a19a 100644
|
||||
--- a/apps/web/src/app/core/router.service.ts
|
||||
+++ b/apps/web/src/app/core/router.service.ts
|
||||
@@ -61,7 +61,7 @@ export class RouterService {
|
||||
.subscribe((event: NavigationEnd) => {
|
||||
this.currentUrl = event.url;
|
||||
|
||||
- let title = i18nService.t("bitWebVault");
|
||||
+ let title = "Vaultwarden Web";
|
||||
|
||||
if (this.currentUrl.includes("/sm/")) {
|
||||
title = i18nService.t("bitSecretsManager");
|
||||
diff --git a/apps/web/src/app/core/web-platform-utils.service.ts b/apps/web/src/app/core/web-platform-utils.service.ts
|
||||
index 3df2a7d895..f73d811690 100644
|
||||
--- a/apps/web/src/app/core/web-platform-utils.service.ts
|
||||
+++ b/apps/web/src/app/core/web-platform-utils.service.ts
|
||||
@@ -135,14 +135,17 @@ export class WebPlatformUtilsService implements PlatformUtilsService {
|
||||
}
|
||||
|
||||
isDev(): boolean {
|
||||
+ return false; // treat Vaultwarden as production ready
|
||||
return process.env.NODE_ENV === "development";
|
||||
}
|
||||
|
||||
isSelfHost(): boolean {
|
||||
+ return true; // treat Vaultwarden as self hosted
|
||||
return WebPlatformUtilsService.isSelfHost();
|
||||
}
|
||||
|
||||
static isSelfHost(): boolean {
|
||||
+ return true; // treat Vaultwarden as self hosted
|
||||
return process.env.ENV.toString() === "selfhosted";
|
||||
}
|
||||
|
||||
diff --git a/apps/web/src/app/layouts/frontend-layout.component.html b/apps/web/src/app/layouts/frontend-layout.component.html
|
||||
index 72f0f1f1da..cea0867131 100644
|
||||
--- a/apps/web/src/app/layouts/frontend-layout.component.html
|
||||
+++ b/apps/web/src/app/layouts/frontend-layout.component.html
|
||||
@@ -1,6 +1,11 @@
|
||||
<router-outlet></router-outlet>
|
||||
<div class="container my-5 text-muted text-center">
|
||||
- <environment-selector></environment-selector>
|
||||
- © {{ year }} Bitwarden Inc. <br />
|
||||
+ Vaultwarden Web<br />
|
||||
{{ "versionNumber" | i18n: version }}
|
||||
+ <br /><br />
|
||||
+ <div class="small">
|
||||
+ A modified version of the Bitwarden® Web Vault for Vaultwarden (an unofficial rewrite of the
|
||||
+ Bitwarden® server).<br />
|
||||
+ Vaultwarden is not associated with the Bitwarden® project nor Bitwarden Inc.
|
||||
+ </div>
|
||||
</div>
|
||||
diff --git a/apps/web/src/app/layouts/header/web-header.component.html b/apps/web/src/app/layouts/header/web-header.component.html
|
||||
index 7cba19b29a..024b14daad 100644
|
||||
--- a/apps/web/src/app/layouts/header/web-header.component.html
|
||||
+++ b/apps/web/src/app/layouts/header/web-header.component.html
|
||||
@@ -61,7 +61,12 @@
|
||||
<i class="bwi bwi-fw bwi-user" aria-hidden="true"></i>
|
||||
{{ "accountSettings" | i18n }}
|
||||
</a>
|
||||
- <a bitMenuItem href="https://bitwarden.com/help/" target="_blank" rel="noreferrer">
|
||||
+ <a
|
||||
+ bitMenuItem
|
||||
+ href="https://github.com/dani-garcia/vaultwarden"
|
||||
+ target="_blank"
|
||||
+ rel="noreferrer"
|
||||
+ >
|
||||
<i class="bwi bwi-fw bwi-question-circle" aria-hidden="true"></i>
|
||||
{{ "getHelp" | i18n }}
|
||||
</a>
|
||||
diff --git a/apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.html b/apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.html
|
||||
index 08195d95bf..f51a216a14 100644
|
||||
--- a/apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.html
|
||||
+++ b/apps/web/src/app/layouts/product-switcher/navigation-switcher/navigation-switcher.component.html
|
||||
@@ -10,10 +10,7 @@
|
||||
>
|
||||
</bit-nav-item>
|
||||
<ng-container *ngIf="moreProducts$ | async as moreProducts">
|
||||
- <section
|
||||
- *ngIf="moreProducts.length > 0"
|
||||
- class="tw-mt-2 tw-flex tw-w-full tw-flex-col tw-gap-2 tw-border-0"
|
||||
- >
|
||||
+ <section *ngIf="false" class="tw-mt-2 tw-flex tw-w-full tw-flex-col tw-gap-2 tw-border-0">
|
||||
<span class="tw-text-xs !tw-text-alt2 tw-p-2 tw-pb-0">{{ "moreFromBitwarden" | i18n }}</span>
|
||||
<ng-container *ngFor="let more of moreProducts">
|
||||
<!-- <a> for when the marketing route is external -->
|
||||
diff --git a/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.html b/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.html
|
||||
index 204737eee2..9bee4f6e03 100644
|
||||
--- a/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.html
|
||||
+++ b/apps/web/src/app/layouts/product-switcher/product-switcher-content.component.html
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<!-- Other options -->
|
||||
<section
|
||||
- *ngIf="products.other.length > 0"
|
||||
+ *ngIf="false"
|
||||
class="tw-mt-4 tw-flex tw-w-full tw-flex-col tw-gap-2 tw-border-0 tw-border-t tw-border-solid tw-border-t-text-muted tw-p-2 tw-pb-0"
|
||||
>
|
||||
<span class="tw-mb-1 tw-text-xs tw-text-muted">{{ "moreFromBitwarden" | i18n }}</span>
|
||||
diff --git a/apps/web/src/app/layouts/user-layout.component.ts b/apps/web/src/app/layouts/user-layout.component.ts
|
||||
index f0ac3ef9b4..f6e7f5a492 100644
|
||||
--- a/apps/web/src/app/layouts/user-layout.component.ts
|
||||
+++ b/apps/web/src/app/layouts/user-layout.component.ts
|
||||
@@ -3,7 +3,7 @@
|
||||
import { CommonModule } from "@angular/common";
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
import { RouterModule } from "@angular/router";
|
||||
-import { Observable, switchMap } from "rxjs";
|
||||
+import { Observable, of } from "rxjs";
|
||||
|
||||
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
||||
@@ -41,15 +41,14 @@ export class UserLayoutComponent implements OnInit {
|
||||
private billingAccountProfileStateService: BillingAccountProfileStateService,
|
||||
private accountService: AccountService,
|
||||
) {
|
||||
- this.showSubscription$ = this.accountService.activeAccount$.pipe(
|
||||
- switchMap((account) =>
|
||||
- this.billingAccountProfileStateService.canViewSubscription$(account.id),
|
||||
- ),
|
||||
- );
|
||||
+ this.showSubscription$ = of(false); // always hide subscriptions in Vaultwarden
|
||||
}
|
||||
|
||||
async ngOnInit() {
|
||||
document.body.classList.remove("layout_frontend");
|
||||
await this.syncService.fullSync(false);
|
||||
+
|
||||
+ this.hasFamilySponsorshipAvailable$ = of(false); // disable family Sponsorships in Vaultwarden
|
||||
+ this.showSponsoredFamilies$ = of(false); // disable family Sponsorships in Vaultwarden
|
||||
}
|
||||
}
|
||||
diff --git a/apps/web/src/app/platform/web-environment.service.ts b/apps/web/src/app/platform/web-environment.service.ts
|
||||
index 1df842d6b3..d61637c92e 100644
|
||||
--- a/apps/web/src/app/platform/web-environment.service.ts
|
||||
+++ b/apps/web/src/app/platform/web-environment.service.ts
|
||||
@@ -38,7 +38,17 @@ export class WebEnvironmentService extends DefaultEnvironmentService {
|
||||
super(stateProvider, accountService, additionalRegionConfigs);
|
||||
|
||||
// The web vault always uses the current location as the base url
|
||||
- envUrls.base ??= this.win.location.origin;
|
||||
+ // If the base URL is `https://vaultwarden.example.com/base/path/`,
|
||||
+ // `window.location.href` should have one of the following forms:
|
||||
+ //
|
||||
+ // - `https://vaultwarden.example.com/base/path/`
|
||||
+ // - `https://vaultwarden.example.com/base/path/#/some/route[?queryParam=...]`
|
||||
+ // - `https://vaultwarden.example.com/base/path/?queryParam=...`
|
||||
+ //
|
||||
+ // We want to get to just `https://vaultwarden.example.com/base/path`.
|
||||
+ let baseUrl = this.win.location.href;
|
||||
+ baseUrl = baseUrl.replace(/(\/+|\/*#.*|\/*\?.*)$/, ""); // Strip off trailing `/`, `#`, `?` and everything after.
|
||||
+ envUrls.base ??= baseUrl;
|
||||
|
||||
// Find the region
|
||||
const currentHostname = new URL(this.win.location.href).hostname;
|
||||
diff --git a/apps/web/src/app/tools/send/add-edit.component.html b/apps/web/src/app/tools/send/add-edit.component.html
|
||||
index 7eade18a7c..b8f865faa7 100644
|
||||
--- a/apps/web/src/app/tools/send/add-edit.component.html
|
||||
+++ b/apps/web/src/app/tools/send/add-edit.component.html
|
||||
@@ -230,7 +230,12 @@
|
||||
<bit-label for="password" *ngIf="!hasPassword">{{ "password" | i18n }}</bit-label>
|
||||
<bit-label for="password" *ngIf="hasPassword">{{ "newPassword" | i18n }}</bit-label>
|
||||
|
||||
- <input bitInput type="password" formControlName="password" />
|
||||
+ <input
|
||||
+ bitInput
|
||||
+ type="password"
|
||||
+ formControlName="password"
|
||||
+ autocomplete="new-password"
|
||||
+ />
|
||||
<button type="button" bitIconButton bitSuffix bitPasswordInputToggle></button>
|
||||
<bit-hint>{{ "sendPasswordDesc" | i18n }}</bit-hint>
|
||||
</bit-form-field>
|
||||
diff --git a/apps/web/src/app/tools/send/send-access-explainer.component.html b/apps/web/src/app/tools/send/send-access-explainer.component.html
|
||||
index e8090cb850..284b916514 100644
|
||||
--- a/apps/web/src/app/tools/send/send-access-explainer.component.html
|
||||
+++ b/apps/web/src/app/tools/send/send-access-explainer.component.html
|
||||
@@ -1,18 +1,5 @@
|
||||
<div class="tw-text-center tw-text-muted">
|
||||
<p bitTypography="body2" class="tw-mb-0">
|
||||
{{ "sendAccessTaglineProductDesc" | i18n }}
|
||||
- {{ "sendAccessTaglineLearnMore" | i18n }}
|
||||
- <a
|
||||
- bitLink
|
||||
- href="https://www.bitwarden.com/products/send?source=web-vault"
|
||||
- target="_blank"
|
||||
- rel="noreferrer"
|
||||
- >Bitwarden Send</a
|
||||
- >
|
||||
- {{ "sendAccessTaglineOr" | i18n }}
|
||||
- <a bitLink [routerLink]="registerRoute$ | async" target="_blank" rel="noreferrer">{{
|
||||
- "sendAccessTaglineSignUp" | i18n
|
||||
- }}</a>
|
||||
- {{ "sendAccessTaglineTryToday" | i18n }}
|
||||
</p>
|
||||
</div>
|
||||
diff --git a/apps/web/src/index.html b/apps/web/src/index.html
|
||||
index 0b8ea86491..5d98411f46 100644
|
||||
--- a/apps/web/src/index.html
|
||||
+++ b/apps/web/src/index.html
|
||||
@@ -5,19 +5,21 @@
|
||||
<meta name="viewport" content="width=1010" />
|
||||
<meta name="theme-color" content="#175DDC" />
|
||||
|
||||
- <title page-title>Bitwarden Web vault</title>
|
||||
+ <title page-title>Vaultwarden Web</title>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png" />
|
||||
<link rel="mask-icon" href="images/icons/safari-pinned-tab.svg" color="#175DDC" />
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
+ <!-- webpackIgnore: true -->
|
||||
+ <link rel="stylesheet" href="css/vaultwarden.css" />
|
||||
</head>
|
||||
<body class="layout_frontend">
|
||||
<app-root>
|
||||
<!-- Note: any changes to this html need to be made in the app.component.html as well -->
|
||||
<div class="tw-p-8 tw-flex">
|
||||
- <img class="new-logo-themed" alt="Bitwarden" />
|
||||
+ <img class="new-logo-themed" alt="Vaultwarden" />
|
||||
<div class="spinner-container tw-justify-center">
|
||||
<i
|
||||
class="bwi bwi-spinner bwi-spin bwi-3x tw-text-muted"
|
||||
diff --git a/apps/web/src/manifest.json b/apps/web/src/manifest.json
|
||||
index 92a1204c60..d9ff4771a3 100644
|
||||
--- a/apps/web/src/manifest.json
|
||||
+++ b/apps/web/src/manifest.json
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
- "name": "Bitwarden Vault",
|
||||
+ "name": "Vaultwarden Web",
|
||||
"icons": [
|
||||
{
|
||||
"src": "images/icons/android-chrome-192x192.png",
|
||||
@@ -12,6 +12,6 @@
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
- "theme_color": "#175DDC",
|
||||
- "background_color": "#175DDC"
|
||||
+ "theme_color": "#FFFFFF",
|
||||
+ "background_color": "#FFFFFF"
|
||||
}
|
||||
diff --git a/apps/web/src/scss/tailwind.css b/apps/web/src/scss/tailwind.css
|
||||
index 1ac7b15401..0c388f6787 100644
|
||||
--- a/apps/web/src/scss/tailwind.css
|
||||
+++ b/apps/web/src/scss/tailwind.css
|
||||
@@ -52,7 +52,7 @@
|
||||
img.new-logo-themed {
|
||||
@apply tw-block;
|
||||
|
||||
- width: 128px;
|
||||
+ width: 175px;
|
||||
}
|
||||
.theme_light img.new-logo-themed {
|
||||
content: url("../images/logo.svg");
|
||||
diff --git a/apps/web/tailwind.config.js b/apps/web/tailwind.config.js
|
||||
index 2c0108ca3e..85d3689ea3 100644
|
||||
--- a/apps/web/tailwind.config.js
|
||||
+++ b/apps/web/tailwind.config.js
|
||||
@@ -8,7 +8,6 @@ config.content = [
|
||||
"../../libs/key-management/src/**/*.{html,ts}",
|
||||
"../../libs/vault/src/**/*.{html,ts}",
|
||||
"../../libs/angular/src/**/*.{html,ts}",
|
||||
- "../../bitwarden_license/bit-web/src/**/*.{html,ts}",
|
||||
];
|
||||
|
||||
module.exports = config;
|
||||
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
|
||||
index 678db7c4af..9c89db617a 100644
|
||||
--- a/apps/web/tsconfig.json
|
||||
+++ b/apps/web/tsconfig.json
|
||||
@@ -10,7 +10,6 @@
|
||||
"@bitwarden/auth/common": ["../../libs/auth/src/common"],
|
||||
"@bitwarden/auth/angular": ["../../libs/auth/src/angular"],
|
||||
"@bitwarden/billing": ["../../libs/billing/src"],
|
||||
- "@bitwarden/bit-common/*": ["../../bitwarden_license/bit-common/src/*"],
|
||||
"@bitwarden/common/*": ["../../libs/common/src/*"],
|
||||
"@bitwarden/components": ["../../libs/components/src"],
|
||||
"@bitwarden/generator-components": ["../../libs/tools/generator/components/src"],
|
||||
diff --git a/clients.code-workspace b/clients.code-workspace
|
||||
index f7d86d2a24..75389727d2 100644
|
||||
--- a/clients.code-workspace
|
||||
+++ b/clients.code-workspace
|
||||
@@ -8,18 +8,10 @@
|
||||
"name": "web vault",
|
||||
"path": "apps/web",
|
||||
},
|
||||
- {
|
||||
- "name": "web vault (bit)",
|
||||
- "path": "bitwarden_license/bit-web",
|
||||
- },
|
||||
{
|
||||
"name": "cli",
|
||||
"path": "apps/cli",
|
||||
},
|
||||
- {
|
||||
- "name": "cli (bit)",
|
||||
- "path": "bitwarden_license/bit-cli",
|
||||
- },
|
||||
{
|
||||
"name": "desktop",
|
||||
"path": "apps/desktop",
|
||||
@@ -32,10 +24,6 @@
|
||||
"name": "libs",
|
||||
"path": "libs",
|
||||
},
|
||||
- {
|
||||
- "name": "common (bit)",
|
||||
- "path": "bitwarden_license/bit-common",
|
||||
- },
|
||||
],
|
||||
"settings": {
|
||||
"eslint.options": {
|
||||
diff --git a/jest.config.js b/jest.config.js
|
||||
index 3ed082bcbc..3c385865d8 100644
|
||||
--- a/jest.config.js
|
||||
+++ b/jest.config.js
|
||||
@@ -20,9 +20,6 @@ module.exports = {
|
||||
"<rootDir>/apps/cli/jest.config.js",
|
||||
"<rootDir>/apps/desktop/jest.config.js",
|
||||
"<rootDir>/apps/web/jest.config.js",
|
||||
- "<rootDir>/bitwarden_license/bit-web/jest.config.js",
|
||||
- "<rootDir>/bitwarden_license/bit-cli/jest.config.js",
|
||||
- "<rootDir>/bitwarden_license/bit-common/jest.config.js",
|
||||
|
||||
"<rootDir>/libs/admin-console/jest.config.js",
|
||||
"<rootDir>/libs/angular/jest.config.js",
|
||||
diff --git a/libs/angular/src/auth/components/register.component.ts b/libs/angular/src/auth/components/register.component.ts
|
||||
index 279294f4c0..1fca6d97e9 100644
|
||||
--- a/libs/angular/src/auth/components/register.component.ts
|
||||
+++ b/libs/angular/src/auth/components/register.component.ts
|
||||
@@ -112,6 +112,14 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn
|
||||
}
|
||||
|
||||
async submit(showToast = true) {
|
||||
+ if (typeof crypto.subtle === "undefined") {
|
||||
+ this.platformUtilsService.showToast(
|
||||
+ "error",
|
||||
+ "This browser requires HTTPS to use the web vault",
|
||||
+ "Check the Vaultwarden wiki for details on how to enable it",
|
||||
+ );
|
||||
+ return;
|
||||
+ }
|
||||
let email = this.formGroup.value.email;
|
||||
email = email.trim().toLowerCase();
|
||||
let name = this.formGroup.value.name;
|
||||
diff --git a/libs/auth/src/angular/anon-layout/anon-layout-wrapper.component.ts b/libs/auth/src/angular/anon-layout/anon-layout-wrapper.component.ts
|
||||
index 04dc3b6dfd..2791b0bc17 100644
|
||||
--- a/libs/auth/src/angular/anon-layout/anon-layout-wrapper.component.ts
|
||||
+++ b/libs/auth/src/angular/anon-layout/anon-layout-wrapper.component.ts
|
||||
@@ -8,6 +8,8 @@ import { AnonLayoutComponent } from "@bitwarden/auth/angular";
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { Icon, Translation } from "@bitwarden/components";
|
||||
|
||||
+import { BitwardenShield } from "../icons";
|
||||
+
|
||||
import { AnonLayoutWrapperDataService } from "./anon-layout-wrapper-data.service";
|
||||
|
||||
export interface AnonLayoutWrapperData {
|
||||
@@ -160,7 +162,7 @@ export class AnonLayoutWrapperComponent implements OnInit, OnDestroy {
|
||||
private resetPageData() {
|
||||
this.pageTitle = null;
|
||||
this.pageSubtitle = null;
|
||||
- this.pageIcon = null;
|
||||
+ this.pageIcon = BitwardenShield;
|
||||
this.showReadonlyHostname = null;
|
||||
this.maxWidth = null;
|
||||
this.titleAreaMaxWidth = null;
|
||||
diff --git a/libs/auth/src/angular/anon-layout/anon-layout.component.html b/libs/auth/src/angular/anon-layout/anon-layout.component.html
|
||||
index cb3445abd9..6ad354505d 100644
|
||||
--- a/libs/auth/src/angular/anon-layout/anon-layout.component.html
|
||||
+++ b/libs/auth/src/angular/anon-layout/anon-layout.component.html
|
||||
@@ -8,7 +8,7 @@
|
||||
<a
|
||||
*ngIf="!hideLogo"
|
||||
[routerLink]="['/']"
|
||||
- class="tw-w-[128px] tw-block tw-mb-12 [&>*]:tw-align-top"
|
||||
+ class="tw-w-[175px] tw-block tw-mb-12 [&>*]:tw-align-top"
|
||||
>
|
||||
<bit-icon [icon]="logo"></bit-icon>
|
||||
</a>
|
||||
@@ -55,8 +55,14 @@
|
||||
<ng-content select="[slot=environment-selector]"></ng-content>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="!hideYearAndVersion">
|
||||
- <div bitTypography="body2">© {{ year }} Bitwarden Inc.</div>
|
||||
- <div bitTypography="body2">{{ version }}</div>
|
||||
+ <div bitTypography="body2">Vaultwarden Web</div>
|
||||
+ <div bitTypography="body2">Version {{ version }}</div>
|
||||
+ <br />
|
||||
+ <div class="small">
|
||||
+ A modified version of the Bitwarden® Web Vault for Vaultwarden (an unofficial rewrite of
|
||||
+ the Bitwarden® server).<br />
|
||||
+ Vaultwarden is not associated with the Bitwarden® project nor Bitwarden Inc.
|
||||
+ </div>
|
||||
</ng-container>
|
||||
</footer>
|
||||
</main>
|
||||
diff --git a/libs/components/src/tw-theme.css b/libs/components/src/tw-theme.css
|
||||
index 0a5a66337a..af5f0fb57a 100644
|
||||
--- a/libs/components/src/tw-theme.css
|
||||
+++ b/libs/components/src/tw-theme.css
|
||||
@@ -7,13 +7,13 @@
|
||||
--color-background: 255 255 255;
|
||||
--color-background-alt: 243 246 249;
|
||||
--color-background-alt2: 23 92 219;
|
||||
- --color-background-alt3: 26 65 172;
|
||||
- --color-background-alt4: 2 15 102;
|
||||
+ --color-background-alt3: 33 37 41; /* bg of menu panel */
|
||||
+ --color-background-alt4: 16 18 21; /* bg of active menu item */
|
||||
|
||||
--color-primary-100: 219 229 246;
|
||||
- --color-primary-300: 121 161 233;
|
||||
- --color-primary-600: 23 93 220;
|
||||
- --color-primary-700: 26 65 172;
|
||||
+ --color-primary-300: 108 117 125; /* hover of menu items */
|
||||
+ --color-primary-600: 18 82 163; /* color of links and buttons */
|
||||
+ --color-primary-700: 13 60 119; /* hover of links and buttons */
|
||||
|
||||
--color-secondary-100: 230 233 239;
|
||||
--color-secondary-300: 168 179 200;
|
||||
@@ -49,7 +49,7 @@
|
||||
--color-text-alt2: 255 255 255;
|
||||
--color-text-code: 192 17 118;
|
||||
|
||||
- --color-marketing-logo: 23 93 220;
|
||||
+ --color-marketing-logo: 15 15 15; /* The Vaultwarden Logo */
|
||||
|
||||
--tw-ring-offset-color: #ffffff;
|
||||
}
|
||||
diff --git a/libs/components/tailwind.config.js b/libs/components/tailwind.config.js
|
||||
index 7a53c82ec5..9d0a337bd2 100644
|
||||
--- a/libs/components/tailwind.config.js
|
||||
+++ b/libs/components/tailwind.config.js
|
||||
@@ -6,7 +6,6 @@ config.content = [
|
||||
"libs/auth/src/**/*.{html,ts,mdx}",
|
||||
"apps/web/src/**/*.{html,ts,mdx}",
|
||||
"apps/browser/src/**/*.{html,ts,mdx}",
|
||||
- "bitwarden_license/bit-web/src/**/*.{html,ts,mdx}",
|
||||
".storybook/preview.tsx",
|
||||
];
|
||||
config.safelist = [
|
||||
diff --git a/tailwind.config.js b/tailwind.config.js
|
||||
index 637c28a54e..7afcea4e65 100644
|
||||
--- a/tailwind.config.js
|
||||
+++ b/tailwind.config.js
|
||||
@@ -10,7 +10,6 @@ config.content = [
|
||||
"./libs/tools/send/send-ui/src/*.{html,ts,mdx}",
|
||||
"./libs/vault/src/**/*.{html,ts,mdx}",
|
||||
"./apps/web/src/**/*.{html,ts,mdx}",
|
||||
- "./bitwarden_license/bit-web/src/**/*.{html,ts,mdx}",
|
||||
"./.storybook/preview.js",
|
||||
];
|
||||
config.safelist = [
|
||||
diff --git a/tsconfig.json b/tsconfig.json
|
||||
index 91b4ee7dd6..691a47c1d3 100644
|
||||
--- a/tsconfig.json
|
||||
+++ b/tsconfig.json
|
||||
@@ -39,8 +39,7 @@
|
||||
"@bitwarden/tools-card": ["./libs/tools/card/src"],
|
||||
"@bitwarden/node/*": ["./libs/node/src/*"],
|
||||
"@bitwarden/web-vault/*": ["./apps/web/src/*"],
|
||||
- "@bitwarden/vault": ["./libs/vault/src"],
|
||||
- "@bitwarden/bit-common/*": ["./bitwarden_license/bit-common/src/*"]
|
||||
+ "@bitwarden/vault": ["./libs/vault/src"]
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
@@ -57,9 +56,7 @@
|
||||
"apps/browser/src/**/*",
|
||||
"libs/*/src/**/*",
|
||||
"libs/tools/send/**/src/**/*",
|
||||
- "libs/tools/card/src/**/*",
|
||||
- "bitwarden_license/bit-web/src/**/*",
|
||||
- "bitwarden_license/bit-common/src/**/*"
|
||||
+ "libs/tools/card/src/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"apps/web/src/**/*.spec.ts",
|
Loading…
Add table
Add a link
Reference in a new issue