From b502d8830cc772ec8c10d2d2765f6bd2483dcfc1 Mon Sep 17 00:00:00 2001 From: Takiguchi Date: Wed, 30 Jan 2019 22:27:26 +0100 Subject: [PATCH] Correction of change password component and its back-office processing. --- .../org/codiki/account/AccountController.java | 17 ++++++---- .../change-password.component.html | 15 ++++----- .../change-password.component.ts | 32 ++++++++++++++++--- src/main/ts-v7/src/app/app.routing.ts | 2 ++ 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/codiki/account/AccountController.java b/src/main/java/org/codiki/account/AccountController.java index 835e0de..9e063b4 100755 --- a/src/main/java/org/codiki/account/AccountController.java +++ b/src/main/java/org/codiki/account/AccountController.java @@ -2,6 +2,7 @@ package org.codiki.account; import java.io.IOException; import java.security.Principal; +import java.util.Optional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -10,6 +11,7 @@ import org.codiki.core.entities.dto.PasswordWrapperDTO; import org.codiki.core.entities.dto.UserDTO; import org.codiki.core.entities.dto.View; import org.codiki.core.entities.persistence.User; +import org.codiki.core.services.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.Authentication; @@ -29,6 +31,8 @@ import com.fasterxml.jackson.annotation.JsonView; public class AccountController { @Autowired private AccountService accountService; + @Autowired + private UserService userService; @JsonView(View.UserDTO.class) @PostMapping("/login") @@ -63,13 +67,12 @@ public class AccountController { final HttpServletRequest pRequest, final HttpServletResponse pResponse, final Principal pPrincipal) throws IOException { -// final Optional connectedUser = tokenService.getAuthenticatedUserByToken(pRequest); -// if(connectedUser.isPresent()) { -// accountService.changePassword(connectedUser.get(), pPasswordWrapper, pResponse); -// } else { -// pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); -// } - + final Optional connectedUser = userService.getUserByPrincipal(pPrincipal); + if(connectedUser.isPresent()) { + accountService.changePassword(connectedUser.get(), pPasswordWrapper, pResponse); + } else { + pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); + } } @PostMapping("/signin") diff --git a/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.html b/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.html index 5e2c09b..5111fda 100644 --- a/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.html +++ b/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.html @@ -3,7 +3,7 @@

Mot de passe

-
-
-
-
+

{{error}}

@@ -58,4 +58,3 @@
- \ No newline at end of file diff --git a/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.ts b/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.ts index 8e05bb6..f932f66 100644 --- a/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.ts +++ b/src/main/ts-v7/src/app/account-settings/change-password/change-password.component.ts @@ -1,6 +1,7 @@ import { Component } from '@angular/core'; import { PasswordWrapper } from '../../core/entities'; import { ChangePasswordService } from './change-password.service'; +import { RouteReuseStrategy, Router } from '@angular/router'; @Component({ selector: 'app-change-password', @@ -13,24 +14,47 @@ import { ChangePasswordService } from './change-password.service'; .submitFormArea { line-height: 50px; } + + #errorMsg { + max-height: 0; + overflow: hidden; + transition: max-height 0.5s ease-out; + margin: 0; + } `] }) export class ChangePasswordComponent { model: PasswordWrapper = new PasswordWrapper('', '', ''); - error: string; constructor( + private router: Router, private changePasswordService: ChangePasswordService ) {} onSubmit(): void { if (this.model.newPassword !== this.model.confirmPassword) { - this.error = 'Les mots de passe saisis ne correspondent pas.'; + this.setMessage('Les mots de passe saisis ne correspondent pas.'); } else { - this.changePasswordService.changePassword(this.model).subscribe(null, error => { - this.error = 'Le mot de passe saisi ne correspond pas au votre.'; + this.changePasswordService.changePassword(this.model).subscribe(() => { + this.router.navigate(['/accountSettings']); + }, error => { + this.setMessage('Le mot de passe saisi ne correspond pas au votre.'); }); } } + + setMessage(message: string): void { + this.error = message; + + const resultMsgDiv = document.getElementById('errorMsg'); + resultMsgDiv.style.maxHeight = '64px'; + + setTimeout(() => { + resultMsgDiv.style.maxHeight = '0px'; + setTimeout(() => { + this.error = undefined; + }, 550); + }, 3000); + } } diff --git a/src/main/ts-v7/src/app/app.routing.ts b/src/main/ts-v7/src/app/app.routing.ts index b3416af..06b7f91 100755 --- a/src/main/ts-v7/src/app/app.routing.ts +++ b/src/main/ts-v7/src/app/app.routing.ts @@ -7,6 +7,7 @@ import { HomeComponent } from './home/home.component'; import { DisconnectionComponent } from './disconnection/disconnection.component'; import { MyPostsComponent } from './posts/myPosts/my-posts.component'; import { AccountSettingsComponent } from './account-settings/account-settings.component'; +import { ChangePasswordComponent } from './account-settings/change-password/change-password.component'; export const appRoutes: Routes = [ @@ -16,5 +17,6 @@ export const appRoutes: Routes = [ { path: 'disconnection', component: DisconnectionComponent }, { path: 'myPosts', component: MyPostsComponent, canActivate: [AuthGuard] }, { path: 'accountSettings', component: AccountSettingsComponent, canActivate: [AuthGuard] }, + { path: 'changePassword', component: ChangePasswordComponent, canActivate: [AuthGuard] }, { path: '**', redirectTo: '/home' } ];