diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java index 8a5bd969..6084fafb 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java @@ -18,7 +18,9 @@ package com.wisemapping.rest; +import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.mail.NotificationService; +import com.wisemapping.model.Collaboration; import com.wisemapping.model.Mindmap; import com.wisemapping.model.User; import com.wisemapping.rest.model.RestLogItem; @@ -31,9 +33,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseStatus; import javax.servlet.http.HttpServletRequest; +import java.util.List; @Controller public class AccountController extends BaseController { @@ -100,6 +106,21 @@ public class AccountController extends BaseController { userService.updateUser(user); } + @RequestMapping(method = RequestMethod.DELETE, value = "account", consumes = {"text/plain"}) + @ResponseStatus(value = HttpStatus.NO_CONTENT) + public void deleleteUser() throws WiseMappingException + + { + final User user = Utils.getUser(true); + final List collaborations = mindmapService.findCollaborations(user); + for (Collaboration collaboration : collaborations) { + final Mindmap mindmap = collaboration.getMindMap(); + mindmapService.removeMindmap(mindmap,user); + } + userService.deleteUser(user); + } + + @RequestMapping(method = RequestMethod.POST, value = "logger/editor", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"}) @ResponseStatus(value = HttpStatus.NO_CONTENT) public void logError(@RequestBody RestLogItem item, @NotNull HttpServletRequest request) { diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java index 8cbdd537..c6688255 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java @@ -117,11 +117,18 @@ public class AdminController extends BaseController { @RequestMapping(method = RequestMethod.DELETE, value = "admin/users/{id}", consumes = {"text/plain"}) @ResponseStatus(value = HttpStatus.NO_CONTENT) - public void getUserByEmail(@PathVariable long id) throws WiseMappingException { + public void deleteUserByEmail(@PathVariable long id) throws WiseMappingException { final User user = userService.getUserBy(id); if (user == null) { throw new IllegalArgumentException("User '" + id + "' could not be found"); } + + final List collaborations = mindmapService.findCollaborations(user); + for (Collaboration collaboration : collaborations) { + final Mindmap mindmap = collaboration.getMindMap(); + mindmapService.removeMindmap(mindmap,user); + } + userService.deleteUser(user); } diff --git a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java index 2842f6f8..6364d3a7 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java @@ -21,7 +21,11 @@ package com.wisemapping.service; import com.wisemapping.dao.UserManager; import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.mail.NotificationService; -import com.wisemapping.model.*; +import com.wisemapping.model.AccessAuditory; +import com.wisemapping.model.AuthenticationType; +import com.wisemapping.model.Collaborator; +import com.wisemapping.model.Mindmap; +import com.wisemapping.model.User; import org.apache.velocity.app.VelocityEngine; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,8 +33,11 @@ import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.ui.velocity.VelocityEngineUtils; -import java.io.IOException; -import java.util.*; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.UUID; public class UserServiceImpl implements UserService { diff --git a/wise-webapp/src/main/webapp/jsp/accountSettings.jsp b/wise-webapp/src/main/webapp/jsp/accountSettings.jsp index 5c1bf789..268caa07 100755 --- a/wise-webapp/src/main/webapp/jsp/accountSettings.jsp +++ b/wise-webapp/src/main/webapp/jsp/accountSettings.jsp @@ -88,6 +88,18 @@ +
+
+
+
+
+ + + "/> +
+
+
@@ -95,6 +107,7 @@ $('#changePasswordMsg').hide(); $('#changeInfoMsg').hide(); $('#languageMsg').hide(); + $('#deleteAccountMsg').hide(); function postChange(url, postBody, msgContainerId, successMsg) { // Change success message ... @@ -144,4 +157,14 @@ postChange("c/restful/account/locale", locale, 'languageMsg', ""); event.preventDefault(); }); + + $('#deleteAccountForm').submit(function (event) { + + var locale = $('#deleteAccountForm option:selected').val(); + + postChange("c/restful/account/locale", locale, 'languageMsg', ""); + event.preventDefault(); + }); + +