1
0
mirror of https://github.com/bitwarden/web synced 2026-01-04 17:43:47 +00:00

org route guards

This commit is contained in:
Kyle Spearrin
2018-07-05 15:27:23 -04:00
parent ba3b2fbed1
commit 7baf72d3db
6 changed files with 80 additions and 22 deletions

View File

@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import {
ActivatedRouteSnapshot,
CanActivate,
Router,
} from '@angular/router';
import { UserService } from 'jslib/abstractions/user.service';
@Injectable()
export class OrganizationGuardService implements CanActivate {
constructor(private userService: UserService, private router: Router) { }
async canActivate(route: ActivatedRouteSnapshot) {
const org = await this.userService.getOrganization(route.params.organizationId);
if (org == null) {
this.router.navigate(['/']);
return false;
}
return true;
}
}

View File

@@ -0,0 +1,26 @@
import { Injectable } from '@angular/core';
import {
ActivatedRouteSnapshot,
CanActivate,
Router,
} from '@angular/router';
import { UserService } from 'jslib/abstractions/user.service';
import { OrganizationUserType } from 'jslib/enums/organizationUserType';
@Injectable()
export class OrganizationTypeGuardService implements CanActivate {
constructor(private userService: UserService, private router: Router) { }
async canActivate(route: ActivatedRouteSnapshot) {
const org = await this.userService.getOrganization(route.parent.params.organizationId);
const allowedTypes = route.data['allowedTypes'] as OrganizationUserType[];
if (allowedTypes == null || allowedTypes.indexOf(org.type) === -1) {
this.router.navigate(['/organizations', org.id]);
return false;
}
return true;
}
}

View File

@@ -11,6 +11,8 @@ import { I18nService } from '../../services/i18n.service';
import { MemoryStorageService } from '../../services/memoryStorage.service';
import { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';
import { OrganizationGuardService } from './organization-guard.service';
import { OrganizationTypeGuardService } from './organization-type-guard.service';
import { RouterService } from './router.service';
import { UnauthGuardService } from './unauth-guard.service';
@@ -142,6 +144,8 @@ export function initFactory(): Function {
providers: [
ValidationService,
AuthGuardService,
OrganizationGuardService,
OrganizationTypeGuardService,
UnauthGuardService,
RouterService,
{ provide: AuditServiceAbstraction, useValue: auditService },