Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DSP-551 Migrate sanitization pipes from BEOL #158

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open
57 changes: 30 additions & 27 deletions projects/dsp-ui/src/lib/action/action.module.ts
Expand Up @@ -25,60 +25,63 @@ import { ReversePipe } from './pipes/array-transformation/reverse.pipe';
import { SortByPipe } from './pipes/array-transformation/sort-by.pipe';
import { FormattedBooleanPipe } from './pipes/formatting/formatted-boolean.pipe';
import { KnoraDatePipe } from './pipes/formatting/knoradate.pipe';
import { SafePipe } from './pipes/sanitization-bypass/safe.pipe';
import { StringifyStringLiteralPipe } from './pipes/string-transformation/stringify-string-literal.pipe';
import { TruncatePipe } from './pipes/string-transformation/truncate.pipe';

@NgModule({
declarations: [
FormattedBooleanPipe,
KnoraDatePipe,
ReversePipe,
SortByPipe,
TruncatePipe,
StringifyStringLiteralPipe,
AdminImageDirective,
ConfirmationDialogComponent,
ConfirmationMessageComponent,
ExistingNameDirective,
FormattedBooleanPipe,
GndDirective,
ProgressIndicatorComponent,
KnoraDatePipe,
LoginFormComponent,
MessageComponent,
ProgressIndicatorComponent,
ReversePipe,
SafePipe,
SortButtonComponent,
SortByPipe,
StringifyStringLiteralPipe,
StringLiteralInputComponent,
LoginFormComponent,
ConfirmationDialogComponent,
ConfirmationMessageComponent
TruncatePipe
],
imports: [
CommonModule,
BrowserAnimationsModule,
CommonModule,
MatButtonModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatDialogModule,
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatMenuModule,
MatCardModule,
MatListModule,
ReactiveFormsModule,
MatButtonModule,
MatButtonToggleModule,
MatFormFieldModule,
MatMenuModule,
ReactiveFormsModule
],
exports: [
AdminImageDirective,
ConfirmationDialogComponent,
ConfirmationMessageComponent,
ExistingNameDirective,
FormattedBooleanPipe,
GndDirective,
KnoraDatePipe,
LoginFormComponent,
MessageComponent,
ProgressIndicatorComponent,
ReversePipe,
SafePipe,
SortButtonComponent,
SortByPipe,
TruncatePipe,
StringifyStringLiteralPipe,
AdminImageDirective,
ExistingNameDirective,
ProgressIndicatorComponent,
MessageComponent,
SortButtonComponent,
StringLiteralInputComponent,
LoginFormComponent,
ConfirmationDialogComponent,
GndDirective,
ConfirmationMessageComponent
TruncatePipe
]
})

Expand Down
1 change: 1 addition & 0 deletions projects/dsp-ui/src/lib/action/index.ts
Expand Up @@ -7,6 +7,7 @@ export * from './pipes/array-transformation/reverse.pipe';
export * from './pipes/array-transformation/sort-by.pipe';
export * from './pipes/string-transformation/truncate.pipe';
export * from './pipes/string-transformation/stringify-string-literal.pipe';
export * from './pipes/sanitization-bypass/safe.pipe';

// services
export * from './services/sorting.service';
Expand Down
@@ -0,0 +1,24 @@
import { TestBed } from '@angular/core/testing';
import { BrowserModule, DomSanitizer } from '@angular/platform-browser';
import { SafePipe } from './safe.pipe';

describe('SafePipe', () => {

let pipe: SafePipe;
let sanitizer: DomSanitizer;

beforeEach(() => {
TestBed.configureTestingModule({
imports: [
BrowserModule
]
});

sanitizer = TestBed.inject(DomSanitizer);
pipe = new SafePipe(sanitizer);
});

it('should create an instance', () => {
expect(pipe).toBeTruthy();
});
});
@@ -0,0 +1,19 @@
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer, SafeHtml, SafeUrl } from '@angular/platform-browser';

@Pipe({
name: 'safe'
})
export class SafePipe implements PipeTransform {

constructor(private _sanitizer: DomSanitizer) {
}

transform(value: string, type: string): SafeHtml | SafeUrl {
switch (type) {
case 'html': return this._sanitizer.bypassSecurityTrustHtml(value);
case 'url': return this._sanitizer.bypassSecurityTrustUrl(value);
default: throw new Error(`Invalid safe type specified: ${type}`);
}
}
}