1 import { Component, OnInit } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
4 import { I18n } from '@ngx-translate/i18n-polyfill';
5 import { BsModalRef } from 'ngx-bootstrap/modal';
7 import { IscsiService } from '../../../shared/api/iscsi.service';
8 import { NotificationType } from '../../../shared/enum/notification-type.enum';
9 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
10 import { CdValidators } from '../../../shared/forms/cd-validators';
11 import { NotificationService } from '../../../shared/services/notification.service';
14 selector: 'cd-iscsi-target-discovery-modal',
15 templateUrl: './iscsi-target-discovery-modal.component.html',
16 styleUrls: ['./iscsi-target-discovery-modal.component.scss']
18 export class IscsiTargetDiscoveryModalComponent implements OnInit {
19 discoveryForm: CdFormGroup;
21 USER_REGEX = /[\w\.:@_-]{8,64}/;
22 PASSWORD_REGEX = /[\w@\-_\/]{12,16}/;
25 public bsModalRef: BsModalRef,
26 private iscsiService: IscsiService,
27 private notificationService: NotificationService,
30 this.discoveryForm = new CdFormGroup({
31 user: new FormControl(''),
32 password: new FormControl(''),
33 mutual_user: new FormControl(''),
34 mutual_password: new FormControl('')
37 CdValidators.validateIf(
38 this.discoveryForm.get('user'),
40 this.discoveryForm.getValue('password') ||
41 this.discoveryForm.getValue('mutual_user') ||
42 this.discoveryForm.getValue('mutual_password'),
43 [Validators.required],
44 [Validators.pattern(this.USER_REGEX)],
46 this.discoveryForm.get('password'),
47 this.discoveryForm.get('mutual_user'),
48 this.discoveryForm.get('mutual_password')
52 CdValidators.validateIf(
53 this.discoveryForm.get('password'),
55 this.discoveryForm.getValue('user') ||
56 this.discoveryForm.getValue('mutual_user') ||
57 this.discoveryForm.getValue('mutual_password'),
58 [Validators.required],
59 [Validators.pattern(this.PASSWORD_REGEX)],
61 this.discoveryForm.get('user'),
62 this.discoveryForm.get('mutual_user'),
63 this.discoveryForm.get('mutual_password')
67 CdValidators.validateIf(
68 this.discoveryForm.get('mutual_user'),
69 () => this.discoveryForm.getValue('mutual_password'),
70 [Validators.required],
71 [Validators.pattern(this.USER_REGEX)],
73 this.discoveryForm.get('user'),
74 this.discoveryForm.get('password'),
75 this.discoveryForm.get('mutual_password')
79 CdValidators.validateIf(
80 this.discoveryForm.get('mutual_password'),
81 () => this.discoveryForm.getValue('mutual_user'),
82 [Validators.required],
83 [Validators.pattern(this.PASSWORD_REGEX)],
85 this.discoveryForm.get('user'),
86 this.discoveryForm.get('password'),
87 this.discoveryForm.get('mutual_user')
93 this.iscsiService.getDiscovery().subscribe((auth) => {
94 this.discoveryForm.patchValue(auth);
99 this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(
101 this.notificationService.show(
102 NotificationType.success,
103 this.i18n('Updated discovery authentication')
105 this.bsModalRef.hide();
108 this.bsModalRef.hide();