1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 16:23:44 +00:00

[PM-4348] Migrate AuthGuards to functions (#9595)

* Migrate auth guards

* Fix remaining auth guard migration

* Fix unauth guard usage

* Add unit tests for auth guard and unauth guard

* Remove unused angular DI code

* Move auth related logic out fo sm guard

* Add tests

* Add more tests for unauth guard

* Fix incorrect merge
This commit is contained in:
Bernd Schoolmann
2024-07-25 23:00:29 +02:00
committed by GitHub
parent 96648b4897
commit ad26f0890a
17 changed files with 392 additions and 176 deletions

View File

@@ -1,7 +1,7 @@
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/auth/guards";
import { authGuard } from "@bitwarden/angular/auth/guards";
import { canAccessSettingsTab } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { isEnterpriseOrgGuard } from "@bitwarden/web-vault/app/admin-console/organizations/guards/is-enterprise-org.guard";
import { organizationPermissionsGuard } from "@bitwarden/web-vault/app/admin-console/organizations/guards/org-permissions.guard";
@@ -16,7 +16,7 @@ const routes: Routes = [
{
path: "organizations/:organizationId",
component: OrganizationLayoutComponent,
canActivate: [AuthGuard, organizationPermissionsGuard()],
canActivate: [authGuard, organizationPermissionsGuard()],
children: [
{
path: "settings",
@@ -61,7 +61,7 @@ const routes: Routes = [
},
{
path: "reporting/reports",
canActivate: [AuthGuard, organizationPermissionsGuard((org) => org.canAccessReports)],
canActivate: [authGuard, organizationPermissionsGuard((org) => org.canAccessReports)],
children: [
{
path: "member-access-report",

View File

@@ -1,7 +1,7 @@
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/auth/guards";
import { authGuard } from "@bitwarden/angular/auth/guards";
import { featureFlaggedRoute } from "@bitwarden/angular/platform/utils/feature-flagged-route";
import { AnonLayoutWrapperComponent } from "@bitwarden/auth/angular";
import { Provider } from "@bitwarden/common/admin-console/models/domain/provider";
@@ -32,12 +32,12 @@ import { SetupComponent } from "./setup/setup.component";
const routes: Routes = [
{
path: "",
canActivate: [AuthGuard],
canActivate: [authGuard],
component: UserLayoutComponent,
children: [
{
path: "",
canActivate: [AuthGuard],
canActivate: [authGuard],
component: ProvidersComponent,
data: { titleId: "providers" },
},
@@ -70,7 +70,7 @@ const routes: Routes = [
},
{
path: "",
canActivate: [AuthGuard],
canActivate: [authGuard],
children: [
{
path: "setup",

View File

@@ -6,10 +6,7 @@ import {
RouterStateSnapshot,
} from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/auth/guards";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
/**
@@ -20,19 +17,13 @@ export const canActivateSM: CanActivateFn = async (
state: RouterStateSnapshot,
) => {
const syncService = inject(SyncService);
const authService = inject(AuthService);
const orgService = inject(OrganizationService);
const authGuard = inject(AuthGuard);
/** Workaround to avoid service initialization race condition. */
if ((await syncService.getLastSync()) == null) {
await syncService.fullSync(false);
}
if ((await authService.getAuthStatus()) !== AuthenticationStatus.Unlocked) {
return authGuard.canActivate(route, state);
}
const orgs = await orgService.getAll();
const smOrg = orgs.find((o) => o.canAccessSecretsManager);
if (smOrg) {

View File

@@ -1,7 +1,7 @@
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { AuthGuard } from "@bitwarden/angular/auth/guards";
import { authGuard } from "@bitwarden/angular/auth/guards";
import { organizationEnabledGuard } from "./guards/sm-org-enabled.guard";
import { canActivateSM } from "./guards/sm.guard";
@@ -22,14 +22,14 @@ const routes: Routes = [
children: [
{
path: "",
canActivate: [canActivateSM],
canActivate: [authGuard, canActivateSM],
pathMatch: "full",
children: [],
},
{
path: ":organizationId",
component: LayoutComponent,
canActivate: [AuthGuard],
canActivate: [authGuard],
children: [
{
path: "",