blob: a696573147cca11bb2730fcc608fad8f957f7722 [file] [log] [blame]
import { Pipe, PipeTransform } from '@angular/core';
import { AuthenticationService } from './authentication.service';
import { forkJoin, Observable, of } from 'rxjs';
import { map } from 'rxjs/operators';
@Pipe({
name: 'authPipe',
pure: true
})
export class AuthPipe implements PipeTransform {
constructor(private authService: AuthenticationService) {
}
transform(linksWithRoles: { roles: string }[]): Observable<{ roles: string }[]> {
if (!linksWithRoles) {
return of(linksWithRoles);
}
return forkJoin(linksWithRoles.map(l => this.authService.isUserInRole(l.roles))).pipe(
map(booleanFilter => linksWithRoles.filter((l, i) => booleanFilter[i]))
);
}
}