From af5e743b01f20f24d0c25e786d57f557b21f3a24 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 6 Apr 2017 21:21:03 +0200 Subject: Client: add ability for user to change nsfw settings --- .../account-change-password.component.html | 24 ++++++++ .../account-change-password.component.ts | 66 ++++++++++++++++++++++ .../app/account/account-change-password/index.ts | 1 + 3 files changed, 91 insertions(+) create mode 100644 client/src/app/account/account-change-password/account-change-password.component.html create mode 100644 client/src/app/account/account-change-password/account-change-password.component.ts create mode 100644 client/src/app/account/account-change-password/index.ts (limited to 'client/src/app/account/account-change-password') diff --git a/client/src/app/account/account-change-password/account-change-password.component.html b/client/src/app/account/account-change-password/account-change-password.component.html new file mode 100644 index 000000000..92d9f900a --- /dev/null +++ b/client/src/app/account/account-change-password/account-change-password.component.html @@ -0,0 +1,24 @@ +
{{ error }}
+ +
+
+ + +
+ {{ formErrors['new-password'] }} +
+
+ +
+ + +
+ + +
diff --git a/client/src/app/account/account-change-password/account-change-password.component.ts b/client/src/app/account/account-change-password/account-change-password.component.ts new file mode 100644 index 000000000..15dc42d22 --- /dev/null +++ b/client/src/app/account/account-change-password/account-change-password.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Router } from '@angular/router'; + +import { NotificationsService } from 'angular2-notifications'; + +import { FormReactive, UserService, USER_PASSWORD } from '../../shared'; + +@Component({ + selector: 'my-account-change-password', + templateUrl: './account-change-password.component.html' +}) + +export class AccountChangePasswordComponent extends FormReactive implements OnInit { + error: string = null; + + form: FormGroup; + formErrors = { + 'new-password': '', + 'new-confirmed-password': '' + }; + validationMessages = { + 'new-password': USER_PASSWORD.MESSAGES, + 'new-confirmed-password': USER_PASSWORD.MESSAGES + }; + + constructor( + private formBuilder: FormBuilder, + private router: Router, + private notificationsService: NotificationsService, + private userService: UserService + ) { + super(); + } + + buildForm() { + this.form = this.formBuilder.group({ + 'new-password': [ '', USER_PASSWORD.VALIDATORS ], + 'new-confirmed-password': [ '', USER_PASSWORD.VALIDATORS ], + }); + + this.form.valueChanges.subscribe(data => this.onValueChanged(data)); + } + + ngOnInit() { + this.buildForm(); + } + + changePassword() { + const newPassword = this.form.value['new-password']; + const newConfirmedPassword = this.form.value['new-confirmed-password']; + + this.error = null; + + if (newPassword !== newConfirmedPassword) { + this.error = 'The new password and the confirmed password do not correspond.'; + return; + } + + this.userService.changePassword(newPassword).subscribe( + () => this.notificationsService.success('Success', 'Password updated.'), + + err => this.error = err + ); + } +} diff --git a/client/src/app/account/account-change-password/index.ts b/client/src/app/account/account-change-password/index.ts new file mode 100644 index 000000000..72a63e48d --- /dev/null +++ b/client/src/app/account/account-change-password/index.ts @@ -0,0 +1 @@ +export * from './account-change-password.component'; -- cgit v1.2.3