Pull request #217: RED-1392 Enable/disable "forgot password"

Merge in RED/ui from RED-1392 to master

* commit '915d6d62f69dfc6d4c4c72e9d04ef4e1126c0c69':
  link general config with controller service
  fix dialogs on small screens
  wip, waiting for backend endpoint
This commit is contained in:
Timo Bejan 2021-06-26 21:09:41 +02:00
commit fba73d758e
7 changed files with 100 additions and 10 deletions

View File

@ -21,7 +21,37 @@
<div class="red-content-inner">
<div class="content-container">
<div class="dialog">
<div class="dialog mb-8">
<div class="dialog-header">
<div class="heading-l" translate="smtp-config-screen.general.title"></div>
<div translate="smtp-config-screen.general.subtitle"></div>
</div>
<div class="dialog-content">
<div class="inline-input-group flex-align-items-center">
<mat-slide-toggle
[(ngModel)]="generalSettings.forgotPasswordFunctionEnabled"
color="primary"
></mat-slide-toggle>
<span
translate="smtp-config-screen.general.form.forgot-password"
class="ml-8"
></span>
</div>
</div>
<div class="dialog-actions">
<button
[disabled]="!generalConfigChanged"
(click)="saveGeneralConfig()"
color="primary"
mat-flat-button
type="submit"
>
{{ 'smtp-config-screen.actions.save' | translate }}
</button>
</div>
</div>
<div class="dialog mt-16">
<div class="dialog-header">
<div class="heading-l" translate="smtp-config-screen.title"></div>
<div translate="smtp-config-screen.subtitle"></div>

View File

@ -4,7 +4,26 @@
.content-container {
background-color: $grey-2;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
@include scroll-bar;
overflow: auto;
}
.w-100 {
min-width: 100px;
width: 100px;
}
.inline-input-group {
background-color: rgba($grey-6, 0.8);
width: 100%;
height: 38px;
border-radius: 4px;
padding: 1px 11px;
}
.dialog {
width: 100%;
min-height: unset;
}

View File

@ -2,7 +2,12 @@ import { Component, OnInit } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { SmtpConfigurationControllerService, SMTPConfigurationModel } from '@redaction/red-ui-http';
import {
GeneralConfigurationModel,
SmtpConfigurationControllerService,
GeneralSettingsControllerService,
SMTPConfigurationModel
} from '@redaction/red-ui-http';
import { NotificationService, NotificationType } from '@services/notification.service';
import { TranslateService } from '@ngx-translate/core';
@ -14,7 +19,11 @@ import { TranslateService } from '@ngx-translate/core';
export class SmtpConfigScreenComponent implements OnInit {
viewReady = false;
configForm: FormGroup;
generalSettings: GeneralConfigurationModel = {
forgotPasswordFunctionEnabled: false
};
private _initialGeneralSettings: GeneralConfigurationModel;
private _initialValue: SMTPConfigurationModel;
constructor(
@ -23,7 +32,8 @@ export class SmtpConfigScreenComponent implements OnInit {
private readonly _formBuilder: FormBuilder,
private readonly _dialogService: AdminDialogService,
private readonly _notificationService: NotificationService,
private readonly _translateService: TranslateService
private readonly _translateService: TranslateService,
private readonly _generalSettingsControllerService: GeneralSettingsControllerService
) {
this.configForm = this._formBuilder.group({
host: [undefined, Validators.required],
@ -59,8 +69,20 @@ export class SmtpConfigScreenComponent implements OnInit {
return false;
}
get generalConfigChanged(): boolean {
if (!this._initialGeneralSettings) return false;
const toBool = key => this.generalSettings[key] !== this._initialGeneralSettings[key];
const changes = Object.keys(this.generalSettings).map(toBool);
return changes.filter(value => value).length > 0;
}
async ngOnInit() {
await this._loadData();
this.generalSettings = await this._generalSettingsControllerService
.getGeneralConfigurations()
.toPromise();
this._initialGeneralSettings = Object.assign({}, this.generalSettings);
}
async save() {
@ -72,6 +94,14 @@ export class SmtpConfigScreenComponent implements OnInit {
this.viewReady = true;
}
async saveGeneralConfig() {
this.viewReady = false;
await this._generalSettingsControllerService
.updateGeneralConfigurations(this.generalSettings)
.toPromise();
this.viewReady = true;
}
openAuthConfigDialog(skipDisableOnCancel?: boolean) {
this._dialogService.openSMTPAuthConfigDialog(this.configForm.getRawValue(), authConfig => {
if (authConfig) {

View File

@ -68,10 +68,6 @@
margin-right: 8px;
}
.ml-8 {
margin-left: 8px;
}
.ml-2 {
margin-left: 2px;
}

View File

@ -1088,6 +1088,13 @@
},
"configurations": "Configurations",
"smtp-config-screen": {
"general": {
"title": "General Configurations",
"subtitle": "",
"form": {
"forgot-password": "Show Forgot password link on Login screen"
}
},
"title": "Configure SMTP Account",
"subtitle": "SMTP (Simple Mail Transfer Protocol) enables you to send your emails through the specified server settings.",
"actions": {

View File

@ -234,7 +234,7 @@ section.settings {
}
.mt-16 {
margin-top: 16px;
margin-top: 16px !important;
}
.mt-20 {
@ -253,6 +253,10 @@ section.settings {
margin-bottom: 8px !important;
}
.ml-8 {
margin-left: 8px;
}
.ml-14 {
margin-left: 14px;
}

View File

@ -23,6 +23,7 @@ import { FileAttributesControllerService } from './fileAttributesController.serv
import { SmtpConfigurationControllerService } from './smtpConfigurationController.service';
import { ReportTemplateControllerService } from './reportTemplateController.service';
import { UploadControllerService } from './uploadController.service';
import { GeneralSettingsControllerService } from './generalSettingsController.service';
export * from './auditController.service';
@ -74,6 +75,8 @@ export * from './reportTemplateController.service';
export * from './uploadController.service';
export * from './generalSettingsController.service';
export const APIS = [
AuditControllerService,
DebugControllerService,
@ -99,5 +102,6 @@ export const APIS = [
FileAttributesControllerService,
SmtpConfigurationControllerService,
ReportTemplateControllerService,
UploadControllerService
UploadControllerService,
GeneralSettingsControllerService
];