From de29c5d2ee8c63dac3578241d793be9630892cbc Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Thu, 19 Dec 2024 16:33:24 +0200 Subject: [PATCH] UI: Fixed enable setting scope for OAuth 2.0 authentication in mail server --- .../pages/admin/mail-server.component.html | 22 ++----- .../home/pages/admin/mail-server.component.ts | 60 +++++-------------- 2 files changed, 19 insertions(+), 63 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.html b/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.html index ff10de6fc2..35ba6048c0 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.html +++ b/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.html @@ -243,23 +243,11 @@ - - admin.oauth2.scope - - - {{scope}} - cancel - - - - - {{ 'admin.oauth2.scope-required' | translate }} - - + + diff --git a/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.ts b/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.ts index 3db82626fe..9cf14e8c49 100644 --- a/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.ts +++ b/ui-ngx/src/app/modules/home/pages/admin/mail-server.component.ts @@ -18,8 +18,7 @@ import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { AppState } from '@core/core.state'; import { PageComponent } from '@shared/components/page.component'; -import { FormBuilder, FormGroup, UntypedFormArray, Validators } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { AdminSettings, MailConfigTemplate, @@ -37,9 +36,6 @@ import { forkJoin, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { DomainSchema, domainSchemaTranslations, } from '@shared/models/oauth2.models'; import { WINDOW } from '@core/services/window.service'; -import { AuthService } from '@core/auth/auth.service'; -import { COMMA, ENTER } from '@angular/cdk/keycodes'; -import { MatChipInputEvent } from '@angular/material/chips'; @Component({ selector: 'tb-mail-server', @@ -51,7 +47,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest smtpProtocols = Object.values(SmtpProtocol); showChangePassword = false; - protocols = Object.values(DomainSchema).filter(value => value !== DomainSchema.MIXED); + protocols: DomainSchema[] = Object.values(DomainSchema).filter(value => value !== DomainSchema.MIXED); domainSchemaTranslations = domainSchemaTranslations; mailServerOauth2Provider = MailServerOauth2Provider; @@ -64,8 +60,6 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest templateProvider = ['CUSTOM']; - readonly separatorKeysCodes: number[] = [ENTER, COMMA]; - private destroy$ = new Subject(); private DOMAIN_AND_PORT_REGEXP = /^(?:\w+(?::\w+)?@)?[^\s/]+(?::\d+)?$/; private URL_REGEXP = /^[A-Za-z][A-Za-z\d.+-]*:\/*(?:\w+(?::\w+)?@)?[^\s/]+(?::\d+)?(?:\/[\w#!:.,?+=&%@\-/]*)?$/; @@ -98,7 +92,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest providerTenantId: [{value: '', disabled: true}, [Validators.required]], authUri: [{value: '', disabled: true}, [Validators.required, Validators.pattern(this.URL_REGEXP)]], tokenUri: [{value: '', disabled: true}, [Validators.required, Validators.pattern(this.URL_REGEXP)]], - scope: [], + scope: this.fb.control>({value: [], disabled: true}, Validators.required), redirectUri: [{ value:'', disabled: true}] }); @@ -134,10 +128,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest }); constructor(protected store: Store, - private router: Router, - private route: ActivatedRoute, private adminService: AdminService, - private authService: AuthService, private translate: TranslateService, public fb: FormBuilder, @Inject(WINDOW) private window: Window) { @@ -148,14 +139,14 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest this.mailServerSettingsForm(); this.domainFormConfiguration(); - forkJoin([ - this.adminService.getLoginProcessingUrl(), - this.adminService.getMailConfigTemplate(), - this.adminService.getAdminSettings('mail') - ]).subscribe(([loginProcessingUrl, mailConfigTemplate, adminSettings]) => { - this.loginProcessingUrl = loginProcessingUrl; - this.initTemplates(mailConfigTemplate); - this.adminSettings = adminSettings; + forkJoin({ + loginProcessingUrl: this.adminService.getLoginProcessingUrl(), + mailConfigTemplate: this.adminService.getMailConfigTemplate(), + adminSettings: this.adminService.getAdminSettings('mail') + }).subscribe((data) => { + this.loginProcessingUrl = data.loginProcessingUrl; + this.initTemplates(data.mailConfigTemplate); + this.adminSettings = data.adminSettings; if (this.adminSettings.jsonValue && isString(this.adminSettings.jsonValue.enableTls)) { this.adminSettings.jsonValue.enableTls = (this.adminSettings.jsonValue.enableTls as any) === 'true'; } @@ -187,7 +178,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest super.ngOnDestroy(); } - private initTemplates(templates): void { + private initTemplates(templates: Array): void { templates.map(provider => { delete provider.additionalInfo; this.templates.set(provider.providerId, provider); @@ -294,6 +285,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest this.mailSettings.get('clientId').enable({emitEvent: false}); this.mailSettings.get('clientSecret').enable({emitEvent: false}); this.mailSettings.get('redirectUri').enable({emitEvent: false}); + this.mailSettings.get('scope').enable({emitEvent: false}); if (this.mailSettings.get('providerId').value === this.mailServerOauth2Provider.CUSTOM) { this.mailSettings.get('authUri').enable({emitEvent: false}); this.mailSettings.get('tokenUri').enable({emitEvent: false}); @@ -307,6 +299,7 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest this.mailSettings.get('redirectUri').disable({emitEvent: false}); this.mailSettings.get('authUri').disable({emitEvent: false}); this.mailSettings.get('tokenUri').disable({emitEvent: false}); + this.mailSettings.get('scope').disable({emitEvent: false}); } } @@ -422,31 +415,6 @@ export class MailServerComponent extends PageComponent implements OnInit, OnDest return formValue; } - trackByParams(index: number): number { - return index; - } - - removeScope(i: number): void { - const controller = this.mailSettings.get('scope') as UntypedFormArray; - controller.removeAt(i); - controller.markAsTouched(); - controller.markAsDirty(); - } - - addScope(event: MatChipInputEvent): void { - const input = event.chipInput.inputElement; - const value = event.value; - const controller = this.mailSettings.get('scope') as UntypedFormArray; - if ((value.trim() !== '')) { - controller.push(this.fb.control(value.trim())); - controller.markAsDirty(); - } - - if (input) { - input.value = ''; - } - } - toggleEditMode(path: string): void { this.mailSettings.get(path).disabled ? this.mailSettings.get(path).enable() : this.mailSettings.get(path).disable(); }