80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
import { CommonModule } from "@angular/common";
|
|
import { Component } from "@angular/core";
|
|
import { ActivatedRoute, RouterModule } from "@angular/router";
|
|
|
|
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
|
import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service";
|
|
import { Provider } from "@bitwarden/common/admin-console/models/domain/provider";
|
|
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
|
|
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
|
|
import { IconModule, LayoutComponent, NavigationModule } from "@bitwarden/components";
|
|
import { ProviderPortalLogo } from "@bitwarden/web-vault/app/admin-console/icons/provider-portal-logo";
|
|
import { PaymentMethodWarningsModule } from "@bitwarden/web-vault/app/billing/shared";
|
|
|
|
@Component({
|
|
selector: "providers-layout",
|
|
templateUrl: "providers-layout.component.html",
|
|
standalone: true,
|
|
imports: [
|
|
CommonModule,
|
|
RouterModule,
|
|
JslibModule,
|
|
LayoutComponent,
|
|
IconModule,
|
|
NavigationModule,
|
|
PaymentMethodWarningsModule,
|
|
],
|
|
})
|
|
// eslint-disable-next-line rxjs-angular/prefer-takeuntil
|
|
export class ProvidersLayoutComponent {
|
|
protected readonly logo = ProviderPortalLogo;
|
|
|
|
provider: Provider;
|
|
private providerId: string;
|
|
|
|
protected showPaymentMethodWarningBanners$ = this.configService.getFeatureFlag$(
|
|
FeatureFlag.ShowPaymentMethodWarningBanners,
|
|
false,
|
|
);
|
|
|
|
constructor(
|
|
private route: ActivatedRoute,
|
|
private providerService: ProviderService,
|
|
private configService: ConfigService,
|
|
) {}
|
|
|
|
ngOnInit() {
|
|
document.body.classList.remove("layout_frontend");
|
|
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
|
|
this.route.params.subscribe(async (params) => {
|
|
this.providerId = params.providerId;
|
|
await this.load();
|
|
});
|
|
}
|
|
|
|
async load() {
|
|
this.provider = await this.providerService.get(this.providerId);
|
|
}
|
|
|
|
get showMenuBar() {
|
|
return this.showManageTab || this.showSettingsTab;
|
|
}
|
|
|
|
get showManageTab() {
|
|
return this.provider.canManageUsers || this.provider.canAccessEventLogs;
|
|
}
|
|
|
|
get showSettingsTab() {
|
|
return this.provider.isProviderAdmin;
|
|
}
|
|
|
|
get manageRoute(): string {
|
|
switch (true) {
|
|
case this.provider.canManageUsers:
|
|
return "manage/people";
|
|
case this.provider.canAccessEventLogs:
|
|
return "manage/events";
|
|
}
|
|
}
|
|
}
|