diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/shared/directives/form-input-disable.directive.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/shared/directives/form-input-disable.directive.ts | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/form-input-disable.directive.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/form-input-disable.directive.ts new file mode 100644 index 000000000..3e3f83bc5 --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/directives/form-input-disable.directive.ts @@ -0,0 +1,27 @@ +import { AfterViewInit, Directive, ElementRef, Optional } from '@angular/core'; + +import { Permissions } from '../models/permissions'; +import { AuthStorageService } from '../services/auth-storage.service'; +import { FormScopeDirective } from './form-scope.directive'; + +@Directive({ + selector: + 'input:not([cdNoFormInputDisable]), select:not([cdNoFormInputDisable]), button:not([cdNoFormInputDisable]), [cdFormInputDisable]' +}) +export class FormInputDisableDirective implements AfterViewInit { + permissions: Permissions; + + constructor( + @Optional() private formScope: FormScopeDirective, + private authStorageService: AuthStorageService, + private elementRef: ElementRef + ) {} + + ngAfterViewInit() { + this.permissions = this.authStorageService.getPermissions(); + const service_name = this.formScope?.cdFormScope; + if (service_name && !this.permissions?.[service_name]?.update) { + this.elementRef.nativeElement.disabled = true; + } + } +} |