mirror of
https://github.com/bitwarden/browser
synced 2025-12-12 14:23:32 +00:00
refactor(auth): [PM-9725] remove deprecated EnvironmentComponent and self-hosted setup modal
* Remove EnvironmentComponent * Cleanup unused translation messages Closes PM-9725
This commit is contained in:
@@ -1518,9 +1518,6 @@
|
|||||||
"selfHostedEnvironment": {
|
"selfHostedEnvironment": {
|
||||||
"message": "Self-hosted environment"
|
"message": "Self-hosted environment"
|
||||||
},
|
},
|
||||||
"selfHostedEnvironmentFooter": {
|
|
||||||
"message": "Specify the base URL of your on-premises hosted Bitwarden installation."
|
|
||||||
},
|
|
||||||
"selfHostedBaseUrlHint": {
|
"selfHostedBaseUrlHint": {
|
||||||
"message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
|
"message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
|
||||||
},
|
},
|
||||||
@@ -1533,9 +1530,6 @@
|
|||||||
"customEnvironment": {
|
"customEnvironment": {
|
||||||
"message": "Custom environment"
|
"message": "Custom environment"
|
||||||
},
|
},
|
||||||
"customEnvironmentFooter": {
|
|
||||||
"message": "For advanced users. You can specify the base URL of each service independently."
|
|
||||||
},
|
|
||||||
"baseUrl": {
|
"baseUrl": {
|
||||||
"message": "Server URL"
|
"message": "Server URL"
|
||||||
},
|
},
|
||||||
@@ -3278,15 +3272,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"settingsEdited": {
|
|
||||||
"message": "Settings have been edited"
|
|
||||||
},
|
|
||||||
"environmentEditedClick": {
|
|
||||||
"message": "Click here"
|
|
||||||
},
|
|
||||||
"environmentEditedReset": {
|
|
||||||
"message": "to reset to pre-configured settings"
|
|
||||||
},
|
|
||||||
"serverVersion": {
|
"serverVersion": {
|
||||||
"message": "Server version"
|
"message": "Server version"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,122 +0,0 @@
|
|||||||
<form #form (ngSubmit)="submit()">
|
|
||||||
<header>
|
|
||||||
<div class="left">
|
|
||||||
<button type="button" routerLink="/login">{{ "close" | i18n }}</button>
|
|
||||||
</div>
|
|
||||||
<h1 class="center">
|
|
||||||
<span class="title">{{ "appName" | i18n }}</span>
|
|
||||||
</h1>
|
|
||||||
<div class="right">
|
|
||||||
<button type="submit" [disabled]="form.loading">
|
|
||||||
<span [hidden]="form.loading">{{ "save" | i18n }}</span>
|
|
||||||
<i class="bwi bwi-spinner bwi-lg bwi-spin" [hidden]="!form.loading" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<main tabindex="-1">
|
|
||||||
<app-callout
|
|
||||||
type="info"
|
|
||||||
title="{{ 'settingsEdited' | i18n }}"
|
|
||||||
*ngIf="showEditedManagedSettings"
|
|
||||||
>
|
|
||||||
<a href="#" appStopClick (click)="resetEnvironment()">
|
|
||||||
{{ "environmentEditedClick" | i18n }}
|
|
||||||
</a>
|
|
||||||
{{ "environmentEditedReset" | i18n }}
|
|
||||||
</app-callout>
|
|
||||||
|
|
||||||
<div class="box">
|
|
||||||
<h2 class="box-header">
|
|
||||||
{{ "selfHostedEnvironment" | i18n }}
|
|
||||||
</h2>
|
|
||||||
<div class="box-content">
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="baseUrl">{{ "baseUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="baseUrl"
|
|
||||||
type="text"
|
|
||||||
name="BaseUrl"
|
|
||||||
aria-describedby="baseUrlHelp"
|
|
||||||
[(ngModel)]="baseUrl"
|
|
||||||
placeholder="ex. https://bitwarden.company.com"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="baseUrlHelp" class="box-footer">
|
|
||||||
{{ "selfHostedEnvironmentFooter" | i18n }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="box">
|
|
||||||
<h2 class="box-header">
|
|
||||||
{{ "customEnvironment" | i18n }}
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
role="group"
|
|
||||||
attr.aria-label="{{ 'customEnvironment' | i18n }}"
|
|
||||||
aria-describedby="customEnvironmentHelp"
|
|
||||||
class="box-content"
|
|
||||||
[hidden]="!showCustom"
|
|
||||||
>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="webVaultUrl">{{ "webVaultUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="webVaultUrl"
|
|
||||||
type="text"
|
|
||||||
name="WebVaultUrl"
|
|
||||||
[(ngModel)]="webVaultUrl"
|
|
||||||
inputmode="url"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="apiUrl">{{ "apiUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="apiUrl"
|
|
||||||
type="text"
|
|
||||||
name="ApiUrl"
|
|
||||||
[(ngModel)]="apiUrl"
|
|
||||||
inputmode="url"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="identityUrl">{{ "identityUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="identityUrl"
|
|
||||||
type="text"
|
|
||||||
name="IdentityUrl"
|
|
||||||
[(ngModel)]="identityUrl"
|
|
||||||
inputmode="url"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="notificationsUrl">{{ "notificationsUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="notificationsUrl"
|
|
||||||
type="text"
|
|
||||||
name="NotificationsUrl"
|
|
||||||
inputmode="url"
|
|
||||||
[(ngModel)]="notificationsUrl"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="iconsUrl">{{ "iconsUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="iconsUrl"
|
|
||||||
type="text"
|
|
||||||
name="IconsUrl"
|
|
||||||
[(ngModel)]="iconsUrl"
|
|
||||||
inputmode="url"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="customEnvironmentHelp" class="box-footer" [hidden]="!showCustom">
|
|
||||||
{{ "customEnvironmentFooter" | i18n }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
</form>
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
// FIXME: Update this file to be type safe and remove this and next line
|
|
||||||
// @ts-strict-ignore
|
|
||||||
import { Component, OnInit } from "@angular/core";
|
|
||||||
import { Router } from "@angular/router";
|
|
||||||
|
|
||||||
import { EnvironmentComponent as BaseEnvironmentComponent } from "@bitwarden/angular/auth/components/environment.component";
|
|
||||||
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
||||||
import { ToastService } from "@bitwarden/components";
|
|
||||||
|
|
||||||
import { BrowserEnvironmentService } from "../../platform/services/browser-environment.service";
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: "app-environment",
|
|
||||||
templateUrl: "environment.component.html",
|
|
||||||
})
|
|
||||||
export class EnvironmentComponent extends BaseEnvironmentComponent implements OnInit {
|
|
||||||
showEditedManagedSettings = false;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
platformUtilsService: PlatformUtilsService,
|
|
||||||
public environmentService: BrowserEnvironmentService,
|
|
||||||
i18nService: I18nService,
|
|
||||||
private router: Router,
|
|
||||||
modalService: ModalService,
|
|
||||||
toastService: ToastService,
|
|
||||||
) {
|
|
||||||
super(platformUtilsService, environmentService, i18nService, modalService, toastService);
|
|
||||||
this.showCustom = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
async ngOnInit() {
|
|
||||||
this.showEditedManagedSettings = await this.environmentService.settingsHaveChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
async resetEnvironment() {
|
|
||||||
const urls = await this.environmentService.getManagedEnvironment();
|
|
||||||
|
|
||||||
this.baseUrl = urls.base;
|
|
||||||
this.webVaultUrl = urls.webVault;
|
|
||||||
this.apiUrl = urls.api;
|
|
||||||
this.iconsUrl = urls.icons;
|
|
||||||
this.identityUrl = urls.identity;
|
|
||||||
this.notificationsUrl = urls.notifications;
|
|
||||||
this.iconsUrl = urls.icons;
|
|
||||||
}
|
|
||||||
|
|
||||||
saved() {
|
|
||||||
super.saved();
|
|
||||||
// FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling.
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
||||||
this.router.navigate([""]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -52,7 +52,6 @@ import {
|
|||||||
|
|
||||||
import { fido2AuthGuard } from "../auth/guards/fido2-auth.guard";
|
import { fido2AuthGuard } from "../auth/guards/fido2-auth.guard";
|
||||||
import { AccountSwitcherComponent } from "../auth/popup/account-switching/account-switcher.component";
|
import { AccountSwitcherComponent } from "../auth/popup/account-switching/account-switcher.component";
|
||||||
import { EnvironmentComponent } from "../auth/popup/environment.component";
|
|
||||||
import {
|
import {
|
||||||
ExtensionAnonLayoutWrapperComponent,
|
ExtensionAnonLayoutWrapperComponent,
|
||||||
ExtensionAnonLayoutWrapperData,
|
ExtensionAnonLayoutWrapperData,
|
||||||
@@ -226,12 +225,6 @@ const routes: Routes = [
|
|||||||
canActivate: [authGuard],
|
canActivate: [authGuard],
|
||||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
data: { elevation: 1 } satisfies RouteDataProperties,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: "environment",
|
|
||||||
component: EnvironmentComponent,
|
|
||||||
canActivate: [unauthGuardFn(unauthRouteOverrides)],
|
|
||||||
data: { elevation: 1 } satisfies RouteDataProperties,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: "view-cipher",
|
path: "view-cipher",
|
||||||
component: ViewV2Component,
|
component: ViewV2Component,
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import { AvatarModule, ButtonModule, FormFieldModule, ToastModule } from "@bitwa
|
|||||||
|
|
||||||
import { AccountComponent } from "../auth/popup/account-switching/account.component";
|
import { AccountComponent } from "../auth/popup/account-switching/account.component";
|
||||||
import { CurrentAccountComponent } from "../auth/popup/account-switching/current-account.component";
|
import { CurrentAccountComponent } from "../auth/popup/account-switching/current-account.component";
|
||||||
import { EnvironmentComponent } from "../auth/popup/environment.component";
|
|
||||||
import { ExtensionAnonLayoutWrapperComponent } from "../auth/popup/extension-anon-layout-wrapper/extension-anon-layout-wrapper.component";
|
import { ExtensionAnonLayoutWrapperComponent } from "../auth/popup/extension-anon-layout-wrapper/extension-anon-layout-wrapper.component";
|
||||||
import { LoginDecryptionOptionsComponentV1 } from "../auth/popup/login-decryption-options/login-decryption-options-v1.component";
|
import { LoginDecryptionOptionsComponentV1 } from "../auth/popup/login-decryption-options/login-decryption-options-v1.component";
|
||||||
import { RemovePasswordComponent } from "../auth/popup/remove-password.component";
|
import { RemovePasswordComponent } from "../auth/popup/remove-password.component";
|
||||||
@@ -92,7 +91,6 @@ import "../platform/popup/locales";
|
|||||||
AppComponent,
|
AppComponent,
|
||||||
ColorPasswordPipe,
|
ColorPasswordPipe,
|
||||||
ColorPasswordCountPipe,
|
ColorPasswordCountPipe,
|
||||||
EnvironmentComponent,
|
|
||||||
LoginDecryptionOptionsComponentV1,
|
LoginDecryptionOptionsComponentV1,
|
||||||
SetPasswordComponent,
|
SetPasswordComponent,
|
||||||
SsoComponentV1,
|
SsoComponentV1,
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import { DecryptionFailureDialogComponent } from "@bitwarden/vault";
|
|||||||
|
|
||||||
import { AccessibilityCookieComponent } from "../auth/accessibility-cookie.component";
|
import { AccessibilityCookieComponent } from "../auth/accessibility-cookie.component";
|
||||||
import { DeleteAccountComponent } from "../auth/delete-account.component";
|
import { DeleteAccountComponent } from "../auth/delete-account.component";
|
||||||
import { EnvironmentComponent } from "../auth/environment.component";
|
|
||||||
import { LoginModule } from "../auth/login/login.module";
|
import { LoginModule } from "../auth/login/login.module";
|
||||||
import { RemovePasswordComponent } from "../auth/remove-password.component";
|
import { RemovePasswordComponent } from "../auth/remove-password.component";
|
||||||
import { SetPasswordComponent } from "../auth/set-password.component";
|
import { SetPasswordComponent } from "../auth/set-password.component";
|
||||||
@@ -70,7 +69,6 @@ import { SharedModule } from "./shared/shared.module";
|
|||||||
CollectionsComponent,
|
CollectionsComponent,
|
||||||
ColorPasswordPipe,
|
ColorPasswordPipe,
|
||||||
ColorPasswordCountPipe,
|
ColorPasswordCountPipe,
|
||||||
EnvironmentComponent,
|
|
||||||
FolderAddEditComponent,
|
FolderAddEditComponent,
|
||||||
HeaderComponent,
|
HeaderComponent,
|
||||||
PasswordHistoryComponent,
|
PasswordHistoryComponent,
|
||||||
|
|||||||
@@ -1,103 +0,0 @@
|
|||||||
<div class="modal fade" role="dialog" aria-modal="true" aria-labelledby="selfHosteEnvironmentTitle">
|
|
||||||
<div class="modal-dialog" role="document">
|
|
||||||
<form class="modal-content" (ngSubmit)="submit()">
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="box">
|
|
||||||
<h1 class="box-header" id="selfHosteEnvironmentTitle">
|
|
||||||
{{ "selfHostedEnvironment" | i18n }}
|
|
||||||
</h1>
|
|
||||||
<div class="box-content">
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="baseUrl">{{ "baseUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="baseUrl"
|
|
||||||
type="text"
|
|
||||||
name="BaseUrl"
|
|
||||||
aria-describedby="baseUrlHelp"
|
|
||||||
[(ngModel)]="baseUrl"
|
|
||||||
placeholder="{{ 'ex' | i18n }} https://bitwarden.company.com"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="baseUrlHelp" class="box-footer">
|
|
||||||
{{ "selfHostedEnvironmentFooter" | i18n }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="box">
|
|
||||||
<h2 class="box-header">
|
|
||||||
<button type="button" (click)="toggleCustom()" [attr.aria-expanded]="showCustom">
|
|
||||||
<i
|
|
||||||
class="bwi bwi-lg"
|
|
||||||
aria-hidden="true"
|
|
||||||
[ngClass]="{ 'bwi-angle-right': !showCustom, 'bwi-angle-down': showCustom }"
|
|
||||||
></i>
|
|
||||||
{{ "customEnvironment" | i18n }}
|
|
||||||
</button>
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
role="group"
|
|
||||||
attr.aria-label="{{ 'customEnvironment' | i18n }}"
|
|
||||||
aria-describedby="customEnvironmentHelp"
|
|
||||||
class="box-content"
|
|
||||||
[hidden]="!showCustom"
|
|
||||||
>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="webVaultUrl">{{ "webVaultUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="webVaultUrl"
|
|
||||||
type="text"
|
|
||||||
name="WebVaultUrl"
|
|
||||||
[(ngModel)]="webVaultUrl"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="apiUrl">{{ "apiUrl" | i18n }}</label>
|
|
||||||
<input id="apiUrl" type="text" name="ApiUrl" [(ngModel)]="apiUrl" appInputVerbatim />
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="identityUrl">{{ "identityUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="identityUrl"
|
|
||||||
type="text"
|
|
||||||
name="IdentityUrl"
|
|
||||||
[(ngModel)]="identityUrl"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="notificationsUrl">{{ "notificationsUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="notificationsUrl"
|
|
||||||
type="text"
|
|
||||||
name="NotificationsUrl"
|
|
||||||
[(ngModel)]="notificationsUrl"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="box-content-row" appBoxRow>
|
|
||||||
<label for="iconsUrl">{{ "iconsUrl" | i18n }}</label>
|
|
||||||
<input
|
|
||||||
id="iconsUrl"
|
|
||||||
type="text"
|
|
||||||
name="IconsUrl"
|
|
||||||
[(ngModel)]="iconsUrl"
|
|
||||||
appInputVerbatim
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="customEnvironmentHelp" class="box-footer" [hidden]="!showCustom">
|
|
||||||
{{ "customEnvironmentFooter" | i18n }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="primary" appA11yTitle="{{ 'save' | i18n }}">
|
|
||||||
<i class="bwi bwi-save-changes bwi-lg bwi-fw" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
<button type="button" data-dismiss="modal">{{ "close" | i18n }}</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { Component } from "@angular/core";
|
|
||||||
|
|
||||||
import { EnvironmentComponent as BaseEnvironmentComponent } from "@bitwarden/angular/auth/components/environment.component";
|
|
||||||
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
|
||||||
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
|
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
||||||
import { ToastService } from "@bitwarden/components";
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: "app-environment",
|
|
||||||
templateUrl: "environment.component.html",
|
|
||||||
})
|
|
||||||
export class EnvironmentComponent extends BaseEnvironmentComponent {
|
|
||||||
constructor(
|
|
||||||
platformUtilsService: PlatformUtilsService,
|
|
||||||
environmentService: EnvironmentService,
|
|
||||||
i18nService: I18nService,
|
|
||||||
modalService: ModalService,
|
|
||||||
toastService: ToastService,
|
|
||||||
) {
|
|
||||||
super(platformUtilsService, environmentService, i18nService, modalService, toastService);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -945,9 +945,6 @@
|
|||||||
"selfHostedEnvironment": {
|
"selfHostedEnvironment": {
|
||||||
"message": "Self-hosted environment"
|
"message": "Self-hosted environment"
|
||||||
},
|
},
|
||||||
"selfHostedEnvironmentFooter": {
|
|
||||||
"message": "Specify the base URL of your on-premises hosted Bitwarden installation."
|
|
||||||
},
|
|
||||||
"selfHostedBaseUrlHint": {
|
"selfHostedBaseUrlHint": {
|
||||||
"message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
|
"message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
|
||||||
},
|
},
|
||||||
@@ -960,9 +957,6 @@
|
|||||||
"customEnvironment": {
|
"customEnvironment": {
|
||||||
"message": "Custom environment"
|
"message": "Custom environment"
|
||||||
},
|
},
|
||||||
"customEnvironmentFooter": {
|
|
||||||
"message": "For advanced users. You can specify the base URL of each service independently."
|
|
||||||
},
|
|
||||||
"baseUrl": {
|
"baseUrl": {
|
||||||
"message": "Server URL"
|
"message": "Server URL"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
// FIXME: Update this file to be type safe and remove this and next line
|
|
||||||
// @ts-strict-ignore
|
|
||||||
import { Directive, EventEmitter, Output } from "@angular/core";
|
|
||||||
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
||||||
|
|
||||||
import {
|
|
||||||
EnvironmentService,
|
|
||||||
Region,
|
|
||||||
} from "@bitwarden/common/platform/abstractions/environment.service";
|
|
||||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
||||||
import { ToastService } from "@bitwarden/components";
|
|
||||||
|
|
||||||
import { ModalService } from "../../services/modal.service";
|
|
||||||
|
|
||||||
@Directive()
|
|
||||||
export class EnvironmentComponent {
|
|
||||||
@Output() onSaved = new EventEmitter();
|
|
||||||
|
|
||||||
iconsUrl: string;
|
|
||||||
identityUrl: string;
|
|
||||||
apiUrl: string;
|
|
||||||
webVaultUrl: string;
|
|
||||||
notificationsUrl: string;
|
|
||||||
baseUrl: string;
|
|
||||||
showCustom = false;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
protected platformUtilsService: PlatformUtilsService,
|
|
||||||
protected environmentService: EnvironmentService,
|
|
||||||
protected i18nService: I18nService,
|
|
||||||
private modalService: ModalService,
|
|
||||||
private toastService: ToastService,
|
|
||||||
) {
|
|
||||||
this.environmentService.environment$.pipe(takeUntilDestroyed()).subscribe((env) => {
|
|
||||||
if (env.getRegion() !== Region.SelfHosted) {
|
|
||||||
this.baseUrl = "";
|
|
||||||
this.webVaultUrl = "";
|
|
||||||
this.apiUrl = "";
|
|
||||||
this.identityUrl = "";
|
|
||||||
this.iconsUrl = "";
|
|
||||||
this.notificationsUrl = "";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const urls = env.getUrls();
|
|
||||||
this.baseUrl = urls.base || "";
|
|
||||||
this.webVaultUrl = urls.webVault || "";
|
|
||||||
this.apiUrl = urls.api || "";
|
|
||||||
this.identityUrl = urls.identity || "";
|
|
||||||
this.iconsUrl = urls.icons || "";
|
|
||||||
this.notificationsUrl = urls.notifications || "";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async submit() {
|
|
||||||
await this.environmentService.setEnvironment(Region.SelfHosted, {
|
|
||||||
base: this.baseUrl,
|
|
||||||
api: this.apiUrl,
|
|
||||||
identity: this.identityUrl,
|
|
||||||
webVault: this.webVaultUrl,
|
|
||||||
icons: this.iconsUrl,
|
|
||||||
notifications: this.notificationsUrl,
|
|
||||||
});
|
|
||||||
|
|
||||||
this.toastService.showToast({
|
|
||||||
variant: "success",
|
|
||||||
title: null,
|
|
||||||
message: this.i18nService.t("environmentSaved"),
|
|
||||||
});
|
|
||||||
this.saved();
|
|
||||||
}
|
|
||||||
|
|
||||||
toggleCustom() {
|
|
||||||
this.showCustom = !this.showCustom;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected saved() {
|
|
||||||
this.onSaved.emit();
|
|
||||||
this.modalService.closeAll();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user