diff --git a/pom.xml b/pom.xml
index 7cea613..165aeda 100755
--- a/pom.xml
+++ b/pom.xml
@@ -70,6 +70,13 @@
commons-lang33.7
+
+
+ org.mockito
+ mockito-all
+ 1.9.5
+ test
+
diff --git a/src/main/java/org/codiki/account/AccountController.java b/src/main/java/org/codiki/account/AccountController.java
index 373b8fa..67a65ec 100755
--- a/src/main/java/org/codiki/account/AccountController.java
+++ b/src/main/java/org/codiki/account/AccountController.java
@@ -87,4 +87,10 @@ public class AccountController {
public UserDTO signin(@RequestBody final UserDTO pUser, final HttpServletResponse pResponse) throws IOException {
return accountService.signin(pUser, pResponse);
}
+
+ @PutMapping("/")
+ public void update(@RequestBody final UserDTO pUser, final HttpServletRequest pRequest,
+ final HttpServletResponse pResponse) throws IOException {
+ accountService.updateUser(pUser, pRequest, pResponse);
+ }
}
diff --git a/src/main/java/org/codiki/account/AccountService.java b/src/main/java/org/codiki/account/AccountService.java
index cf9aa96..c921696 100755
--- a/src/main/java/org/codiki/account/AccountService.java
+++ b/src/main/java/org/codiki/account/AccountService.java
@@ -140,4 +140,32 @@ public class AccountService {
return new UserDTO(user);
}
+
+ public void updateUser(final UserDTO pUser, final HttpServletRequest pRequest,
+ final HttpServletResponse pResponse) throws IOException {
+ final Optional connectedUserOpt = tokenService.getAuthenticatedUserByToken(pRequest);
+ if(connectedUserOpt.isPresent()) {
+ final User connectedUser = connectedUserOpt.get();
+
+ final Optional userFromDb = userRepository.findByEmail(pUser.getEmail());
+
+ /*
+ * If a user is returned by the repository, that's the email adress is used, but
+ * if it is not the same as the connected user, that's the email adress
+ * corresponds to another user. So a 409 error is sent. Otherwise, if no user is
+ * returned by the repository, that's the email adress is free to be used. So,
+ * user can change him email adress.
+ */
+ if(userFromDb.isPresent() && !connectedUser.getEmail().equals(userFromDb.get().getEmail())) {
+ pResponse.sendError(HttpServletResponse.SC_CONFLICT);
+ } else {
+ connectedUser.setName(pUser.getName());
+ connectedUser.setEmail(pUser.getEmail());
+
+ userRepository.save(connectedUser);
+ }
+ } else {
+ pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ }
}
diff --git a/src/main/ts/src/app/account-settings/profil-edition/profil-edition.component.html b/src/main/ts/src/app/account-settings/profil-edition/profil-edition.component.html
index cc50d1b..0113bcb 100755
--- a/src/main/ts/src/app/account-settings/profil-edition/profil-edition.component.html
+++ b/src/main/ts/src/app/account-settings/profil-edition/profil-edition.component.html
@@ -7,7 +7,7 @@
alt="Card image cap"
mdbTooltip="Modifier mon image de profil"
placement="bottom">
-