mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
ACA-4611 Committed the backend changes
This commit is contained in:
@@ -30,6 +30,7 @@ import { DataTableModule } from './datatable/datatable.module';
|
|||||||
import { InfoDrawerModule } from './info-drawer/info-drawer.module';
|
import { InfoDrawerModule } from './info-drawer/info-drawer.module';
|
||||||
import { LanguageMenuModule } from './language-menu/language-menu.module';
|
import { LanguageMenuModule } from './language-menu/language-menu.module';
|
||||||
import { LoginModule } from './login/login.module';
|
import { LoginModule } from './login/login.module';
|
||||||
|
import { ForgotPasswordModule } from './forgot-password/forgot-password.module';
|
||||||
import { PaginationModule } from './pagination/pagination.module';
|
import { PaginationModule } from './pagination/pagination.module';
|
||||||
import { HostSettingsModule } from './settings/host-settings.module';
|
import { HostSettingsModule } from './settings/host-settings.module';
|
||||||
import { ToolbarModule } from './toolbar/toolbar.module';
|
import { ToolbarModule } from './toolbar/toolbar.module';
|
||||||
@@ -92,6 +93,7 @@ import { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';
|
|||||||
FormBaseModule,
|
FormBaseModule,
|
||||||
CommentsModule,
|
CommentsModule,
|
||||||
LoginModule,
|
LoginModule,
|
||||||
|
ForgotPasswordModule,
|
||||||
LanguageMenuModule,
|
LanguageMenuModule,
|
||||||
InfoDrawerModule,
|
InfoDrawerModule,
|
||||||
DataColumnModule,
|
DataColumnModule,
|
||||||
@@ -134,6 +136,7 @@ import { MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';
|
|||||||
FormBaseModule,
|
FormBaseModule,
|
||||||
CommentsModule,
|
CommentsModule,
|
||||||
LoginModule,
|
LoginModule,
|
||||||
|
ForgotPasswordModule,
|
||||||
LanguageMenuModule,
|
LanguageMenuModule,
|
||||||
InfoDrawerModule,
|
InfoDrawerModule,
|
||||||
DataColumnModule,
|
DataColumnModule,
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<div class="app-dialog">
|
||||||
|
<div class="resettingPassword">
|
||||||
|
<div class="aaa-dialog-header">
|
||||||
|
<div class="aaa-mat-dialog-title" mat-dialog-title style="font-weight:bold; font-size:large;">
|
||||||
|
{{ 'PASSWORD.RECOVER-PASSWORD' | translate }}
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="aaa-dialog-body" *ngIf="!passwordResetStatus">
|
||||||
|
<p style="font-size: medium;">{{ 'PASSWORD.MESSAGES.FILLER' | translate }}</p>
|
||||||
|
<form [formGroup]="forgotPasswordForm">
|
||||||
|
<label style="font-weight:bold; font-size:medium;">
|
||||||
|
{{ 'PASSWORD.MESSAGES.ENTER-USERNAME' | translate }}
|
||||||
|
</label>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<mat-form-field appearance="fill" style="padding-top:5px; width:100%;">
|
||||||
|
<input data-automation-id="security-control-name-input-text"
|
||||||
|
placeholder="{{ 'PASSWORD.PLACEHOLDERS.USERNAME' | translate }}"
|
||||||
|
matInput width="100%"
|
||||||
|
formControlName="userName"
|
||||||
|
required>
|
||||||
|
<mat-error *ngIf="forgotPasswordForm.controls.username?.hasError('required')">
|
||||||
|
{{ 'PASSWORD.MESSAGES.USERNAME-REQUIRED' | translate }}
|
||||||
|
</mat-error>
|
||||||
|
</mat-form-field>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<button type="button" (click)="sendInstructions()" id="send-instructions-btn"
|
||||||
|
[attr.aria-label]="'PASSWORD.BUTTONS.SEND-INSTRUCTIONS' | translate"
|
||||||
|
[disabled]="isButtonDisabled()" class="adf-login-button" mat-raised-button color="primary"
|
||||||
|
data-automation-id="send-instructions-button" >
|
||||||
|
<span class="adf-login-button-label">
|
||||||
|
{{ 'PASSWORD.BUTTONS.SEND-INSTRUCTIONS' | translate }}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="aaa-dialog-body" *ngIf="passwordResetStatus">
|
||||||
|
<div class="passwordResetSuccessful">
|
||||||
|
<p style="font-size:medium;">
|
||||||
|
<a style="color: blue; text-decoration:underline; cursor:pointer;">
|
||||||
|
{{ 'PASSWORD.MESSAGES.RESET-PASSWORD-EMAIL-SENT' | translate }}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
.app {
|
||||||
|
&-dialog {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 50%;
|
||||||
|
&-body {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
&-footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-security-controls {
|
||||||
|
&-actions {
|
||||||
|
padding: 15px 10px;
|
||||||
|
}
|
||||||
|
&-toggle-description-text {
|
||||||
|
color: var(--theme-accent-color);
|
||||||
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
&-config-type-image-container {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
&-config-type-image {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-recover-password-btn {
|
||||||
|
background: var(--theme-blue-text-background);
|
||||||
|
border: 1px solid var(--theme-blue-border-color);
|
||||||
|
font-size: var(--theme-button-font-size);
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ForgotPasswordComponent } from './forgot-password.component';
|
||||||
|
|
||||||
|
describe('ForgotPasswordComponent', () => {
|
||||||
|
let component: ForgotPasswordComponent;
|
||||||
|
let fixture: ComponentFixture<ForgotPasswordComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ ForgotPasswordComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(ForgotPasswordComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2005 - 2021 Alfresco Software, Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* License rights for this program may be obtained from Alfresco Software, Ltd.
|
||||||
|
* pursuant to a written agreement and any use of this program without such an
|
||||||
|
* agreement is prohibited.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
|
import { PeopleApi, ClientBody } from '@alfresco/js-api';
|
||||||
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-forgot-password',
|
||||||
|
templateUrl: './forgot-password.component.html',
|
||||||
|
styleUrls: ['./forgot-password.component.scss']
|
||||||
|
})
|
||||||
|
export class ForgotPasswordComponent implements OnInit{
|
||||||
|
private peopleApi: PeopleApi;
|
||||||
|
forgotPasswordForm: FormGroup;
|
||||||
|
isSaveInProgress : boolean = false;
|
||||||
|
passwordResetStatus : boolean = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private apiService: AlfrescoApiService,
|
||||||
|
private formBuilder: FormBuilder) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.forgotPasswordForm = this.formBuilder.group({
|
||||||
|
userName: ['', [Validators.required]]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
get peopleApiInstance() {
|
||||||
|
return (
|
||||||
|
this.peopleApi ||
|
||||||
|
(this.peopleApi = new PeopleApi(this.apiService.getInstance()))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sendInstructions() {
|
||||||
|
this.isSaveInProgress = true;
|
||||||
|
this.passwordResetStatus = true;
|
||||||
|
console.log("Sending Email to user ", this.forgotPasswordForm.controls.userName.value);
|
||||||
|
|
||||||
|
this.peopleApiInstance.requestPasswordReset(
|
||||||
|
this.forgotPasswordForm.controls.userName.value, {'client': 'adw'} as ClientBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
isButtonDisabled(): boolean {
|
||||||
|
return this.forgotPasswordForm.invalid || this.isSaveInProgress;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2005 - 2021 Alfresco Software, Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* License rights for this program may be obtained from Alfresco Software, Ltd.
|
||||||
|
* pursuant to a written agreement and any use of this program without such an
|
||||||
|
* agreement is prohibited.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { MaterialModule } from '../material.module';
|
||||||
|
import { ForgotPasswordComponent } from './forgot-password.component';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
RouterModule,
|
||||||
|
MaterialModule,
|
||||||
|
FormsModule,
|
||||||
|
ReactiveFormsModule,
|
||||||
|
CommonModule,
|
||||||
|
TranslateModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
ForgotPasswordComponent
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
ForgotPasswordComponent
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ForgotPasswordModule {}
|
||||||
@@ -309,12 +309,31 @@
|
|||||||
"HELP": "NEED HELP?",
|
"HELP": "NEED HELP?",
|
||||||
"REGISTER": "REGISTER"
|
"REGISTER": "REGISTER"
|
||||||
},
|
},
|
||||||
|
"FORGOT-PASSWORD": {
|
||||||
|
"FORGOT-PASSWORD": "Forgot Password?"
|
||||||
|
},
|
||||||
"DIALOG": {
|
"DIALOG": {
|
||||||
"CANCEL": "Cancel",
|
"CANCEL": "Cancel",
|
||||||
"CHOOSE": "Choose",
|
"CHOOSE": "Choose",
|
||||||
"LOGIN": "Sign in"
|
"LOGIN": "Sign in"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"PASSWORD": {
|
||||||
|
"RECOVER-PASSWORD": "Recover Password",
|
||||||
|
"MESSAGES": {
|
||||||
|
"USERNAME-REQUIRED": "Required",
|
||||||
|
"FILLER": "Don't worry, happens to the best of us.",
|
||||||
|
"ENTER-USERNAME": "Enter Username of your account",
|
||||||
|
"INVALID-USERNAME": "You've entered an invalid Email ID",
|
||||||
|
"RESET-PASSWORD-EMAIL-SENT": "An email has been sent to your registered Email ID. Please click this link when get it."
|
||||||
|
},
|
||||||
|
"PLACEHOLDERS": {
|
||||||
|
"USERNAME": "USERNAME"
|
||||||
|
},
|
||||||
|
"BUTTONS": {
|
||||||
|
"SEND-INSTRUCTIONS": "Send Instructions"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ADF-DATATABLE": {
|
"ADF-DATATABLE": {
|
||||||
"EMPTY": {
|
"EMPTY": {
|
||||||
"HEADER": "This list is empty",
|
"HEADER": "This list is empty",
|
||||||
|
|||||||
@@ -168,6 +168,13 @@
|
|||||||
{{ 'LOGIN.LABEL.REMEMBER' | translate }}
|
{{ 'LOGIN.LABEL.REMEMBER' | translate }}
|
||||||
</mat-checkbox>
|
</mat-checkbox>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="adf-login-action">
|
||||||
|
<div id="adf-login-action" class="adf-login-action adf-full-width">
|
||||||
|
<a style="cursor:pointer;" (click)="forgotPassword()">
|
||||||
|
{{ 'LOGIN.FORGOT-PASSWORD.FORGOT-PASSWORD' | translate }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="implicitFlow">
|
<div *ngIf="implicitFlow">
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ import { OauthConfigModel } from '../../models/oauth-config.model';
|
|||||||
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';
|
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
|
import { ForgotPasswordComponent } from '../../forgot-password/forgot-password.component';
|
||||||
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
// eslint-disable-next-line no-shadow
|
||||||
enum LoginSteps {
|
enum LoginSteps {
|
||||||
@@ -140,9 +142,9 @@ export class LoginComponent implements OnInit, OnDestroy {
|
|||||||
private userPreferences: UserPreferencesService,
|
private userPreferences: UserPreferencesService,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private sanitizer: DomSanitizer,
|
private sanitizer: DomSanitizer,
|
||||||
private alfrescoApiService: AlfrescoApiService
|
private alfrescoApiService: AlfrescoApiService,
|
||||||
) {
|
private dialog: MatDialog
|
||||||
}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.initFormError();
|
this.initFormError();
|
||||||
@@ -190,6 +192,14 @@ export class LoginComponent implements OnInit, OnDestroy {
|
|||||||
this.onSubmit(this.form.value);
|
this.onSubmit(this.form.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
forgotPassword() {
|
||||||
|
this.dialog.open(ForgotPasswordComponent, {
|
||||||
|
data: {
|
||||||
|
title: 'Recover',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
redirectToImplicitLogin() {
|
redirectToImplicitLogin() {
|
||||||
this.alfrescoApiService.getInstance().oauth2Auth.implicitLogin();
|
this.alfrescoApiService.getInstance().oauth2Auth.implicitLogin();
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+350
-344
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user