mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-22 14:17:57 +01:00
Add REST service for reseting user password.
This commit is contained in:
parent
6ff556b317
commit
a4e097ad15
@ -256,9 +256,9 @@
|
|||||||
<version>1.9.4</version>
|
<version>1.9.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.thoughtworks.xstream</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>xstream</artifactId>
|
<artifactId>slf4j-api</artifactId>
|
||||||
<version>1.3.1</version>
|
<version>1.6.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public class ActivationController
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
final String code = request.getParameter("code");
|
final String code = request.getParameter("code");
|
||||||
userService.activateAcount(Long.parseLong(code));
|
userService.activateAccount(Long.parseLong(code));
|
||||||
modelAndView = new ModelAndView("activationAccountConfirmation");
|
modelAndView = new ModelAndView("activationAccountConfirmation");
|
||||||
}
|
}
|
||||||
catch (Throwable exc)
|
catch (Throwable exc)
|
||||||
|
@ -47,4 +47,7 @@ public interface UserManager {
|
|||||||
public Collaborator getCollaboratorBy(String email);
|
public Collaborator getCollaboratorBy(String email);
|
||||||
|
|
||||||
public User createUser(User user, Collaborator col);
|
public User createUser(User user, Collaborator col);
|
||||||
|
|
||||||
|
public void deleteUser(User user);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,8 @@ public class UserManagerImpl
|
|||||||
return getHibernateTemplate().find("from com.wisemapping.model.User user");
|
return getHibernateTemplate().find("from com.wisemapping.model.User user");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public User getUserBy(final String email) {
|
public User getUserBy(final String email) {
|
||||||
final User user;
|
final User user;
|
||||||
final List users = getHibernateTemplate().find("from com.wisemapping.model.User colaborator where email=?", email);
|
final List users = getHibernateTemplate().find("from com.wisemapping.model.User colaborator where email=?", email);
|
||||||
@ -56,6 +58,7 @@ public class UserManagerImpl
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Collaborator getCollaboratorBy(final String email) {
|
public Collaborator getCollaboratorBy(final String email) {
|
||||||
final Collaborator cola;
|
final Collaborator cola;
|
||||||
final List cols = getHibernateTemplate().find("from com.wisemapping.model.Collaborator colaborator where email=?", email);
|
final List cols = getHibernateTemplate().find("from com.wisemapping.model.Collaborator colaborator where email=?", email);
|
||||||
@ -68,11 +71,11 @@ public class UserManagerImpl
|
|||||||
return cola;
|
return cola;
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getUserBy(long id)
|
public User getUserBy(long id) {
|
||||||
{
|
return getHibernateTemplate().get(User.class, id);
|
||||||
return (User)getHibernateTemplate().get(User.class,id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public User getUserByUsername(String username) {
|
public User getUserByUsername(String username) {
|
||||||
final User user;
|
final User user;
|
||||||
final List users = getHibernateTemplate().find("from com.wisemapping.model.User colaborator where username=?", username);
|
final List users = getHibernateTemplate().find("from com.wisemapping.model.User colaborator where username=?", username);
|
||||||
@ -85,6 +88,7 @@ public class UserManagerImpl
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean authenticate(final String email, final String password) {
|
public boolean authenticate(final String email, final String password) {
|
||||||
final boolean result;
|
final boolean result;
|
||||||
final User user = getUserBy(email);
|
final User user = getUserBy(email);
|
||||||
@ -92,20 +96,21 @@ public class UserManagerImpl
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void createUser(User user) {
|
public void createUser(User user) {
|
||||||
assert user != null : "Trying to store a null user";
|
assert user != null : "Trying to store a null user";
|
||||||
// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
|
// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
|
||||||
getHibernateTemplate().saveOrUpdate(user);
|
getHibernateTemplate().saveOrUpdate(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public User createUser(@NotNull User user, @NotNull Collaborator col)
|
@Override
|
||||||
{
|
public User createUser(@NotNull User user, @NotNull Collaborator col) {
|
||||||
// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
|
// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
|
||||||
assert user != null : "Trying to store a null user";
|
assert user != null : "Trying to store a null user";
|
||||||
|
|
||||||
final Set<MindmapUser> set = col.getMindmapUsers();
|
final Set<MindmapUser> set = col.getMindmapUsers();
|
||||||
for (MindmapUser mindmapUser : set) {
|
for (MindmapUser mindmapUser : set) {
|
||||||
MindmapUser newMapUser = new MindmapUser();
|
MindmapUser newMapUser = new MindmapUser();
|
||||||
newMapUser.setRoleId(mindmapUser.getRole().ordinal());
|
newMapUser.setRoleId(mindmapUser.getRole().ordinal());
|
||||||
newMapUser.setMindMap(mindmapUser.getMindMap());
|
newMapUser.setMindMap(mindmapUser.getMindMap());
|
||||||
newMapUser.setCollaborator(user);
|
newMapUser.setCollaborator(user);
|
||||||
@ -118,6 +123,14 @@ public class UserManagerImpl
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteUser(@NotNull User user) {
|
||||||
|
final Collaborator collaborator = this.getCollaboratorBy(user.getEmail());
|
||||||
|
getHibernateTemplate().delete(collaborator);
|
||||||
|
getHibernateTemplate().delete(user);
|
||||||
|
getHibernateTemplate().flush();
|
||||||
|
}
|
||||||
|
|
||||||
public void auditLogin(UserLogin userLogin) {
|
public void auditLogin(UserLogin userLogin) {
|
||||||
assert userLogin != null : "userLogin is null";
|
assert userLogin != null : "userLogin is null";
|
||||||
getHibernateTemplate().save(userLogin);
|
getHibernateTemplate().save(userLogin);
|
||||||
|
@ -5,7 +5,6 @@ import com.wisemapping.exceptions.WiseMappingException;
|
|||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
import com.wisemapping.rest.model.RestUser;
|
import com.wisemapping.rest.model.RestUser;
|
||||||
import com.wisemapping.service.UserService;
|
import com.wisemapping.service.UserService;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@ -15,12 +14,13 @@ import java.io.IOException;
|
|||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class AdminController {
|
public class AdminController {
|
||||||
|
private static final String RESPONSE_VIEW = "responseView";
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/xml", "application/json","text/html"})
|
@RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ModelAndView getUserById(@PathVariable int id) throws IOException {
|
public ModelAndView getUserById(@PathVariable long id) throws IOException {
|
||||||
final User userBy = userService.getUserBy(id);
|
final User userBy = userService.getUserBy(id);
|
||||||
if (userBy == null) {
|
if (userBy == null) {
|
||||||
throw new IllegalArgumentException("User could not be found");
|
throw new IllegalArgumentException("User could not be found");
|
||||||
@ -28,24 +28,53 @@ public class AdminController {
|
|||||||
return new ModelAndView("userView", "user", new RestUser(userBy));
|
return new ModelAndView("userView", "user", new RestUser(userBy));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/xml", "application/json","text/html"})
|
@RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/json", "text/html", "application/xml"})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ModelAndView getUserByEmail(@PathVariable String email) throws IOException {
|
public ModelAndView getUserByEmail(@PathVariable String email) throws IOException {
|
||||||
final User userBy = userService.getUserBy(email);
|
final User user = userService.getUserBy(email);
|
||||||
if (userBy == null) {
|
if (user == null) {
|
||||||
throw new IllegalArgumentException("User '" + email + "' could not be found" );
|
throw new IllegalArgumentException("User '" + email + "' could not be found");
|
||||||
}
|
}
|
||||||
return new ModelAndView("userView", "user", new RestUser(userBy));
|
return new ModelAndView("userView", "user", new RestUser(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"})
|
@RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
|
||||||
public ModelAndView getUserByEmail(@RequestBody RestUser user) throws IOException, WiseMappingException {
|
public ModelAndView getUserByEmail(@RequestBody RestUser user) throws IOException, WiseMappingException {
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
throw new IllegalArgumentException("User could not be found");
|
throw new IllegalArgumentException("User could not be found");
|
||||||
}
|
}
|
||||||
userService.createUser(user.getDelegated(), false);
|
|
||||||
return new ModelAndView("responseView", "message", "User created successfully");
|
|
||||||
|
|
||||||
|
// User already exists ?
|
||||||
|
final String email = user.getEmail();
|
||||||
|
if(userService.getUserBy(email)!=null){
|
||||||
|
throw new IllegalArgumentException("User already exists with this email.");
|
||||||
|
}
|
||||||
|
|
||||||
|
userService.createUser(user.getDelegated(), false);
|
||||||
|
return new ModelAndView(RESPONSE_VIEW, "message", "User '" + user.getId() + "' created successfully");
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.PUT, value = "admin/users/{id}/password", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
|
||||||
|
public ModelAndView changePassword(@RequestBody String password, @PathVariable long id) throws IOException, WiseMappingException {
|
||||||
|
if (password == null) {
|
||||||
|
throw new IllegalArgumentException("Password can not be null");
|
||||||
|
}
|
||||||
|
|
||||||
|
final User user = userService.getUserBy(id);
|
||||||
|
user.setPassword(password);
|
||||||
|
|
||||||
|
userService.changePassword(user);
|
||||||
|
return new ModelAndView(RESPONSE_VIEW, "message", "User '" + user.getId() + "' password has been updated.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.DELETE, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
|
||||||
|
public ModelAndView getUserByEmail(@PathVariable long id) throws IOException, WiseMappingException {
|
||||||
|
final User user = userService.getUserBy(id);
|
||||||
|
if (user == null) {
|
||||||
|
throw new IllegalArgumentException("User '" + id + "' could not be found");
|
||||||
|
}
|
||||||
|
userService.deleteUser(user);
|
||||||
|
return new ModelAndView(RESPONSE_VIEW, "message", "User deleted successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ public class MindmapController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MindmapService mindmapService;
|
private MindmapService mindmapService;
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/xml", "application/json", "text/html"})
|
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/json", "text/html", "application/xml"})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ModelAndView getMindmap(@PathVariable int id) throws IOException {
|
public ModelAndView getMindmap(@PathVariable int id) throws IOException {
|
||||||
final MindMap mindMap = mindmapService.getMindmapById(id);
|
final MindMap mindMap = mindmapService.getMindmapById(id);
|
||||||
@ -34,7 +34,7 @@ public class MindmapController {
|
|||||||
return new ModelAndView("mapView", "map", map);
|
return new ModelAndView("mapView", "map", map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = "/maps", produces = {"application/xml", "application/json", "text/html"})
|
@RequestMapping(method = RequestMethod.GET, value = "/maps", produces = {"application/json", "text/html", "application/xml"})
|
||||||
public ModelAndView getMindmaps() throws IOException {
|
public ModelAndView getMindmaps() throws IOException {
|
||||||
final User user = com.wisemapping.security.Utils.getUser();
|
final User user = com.wisemapping.security.Utils.getUser();
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ public class MindmapController {
|
|||||||
return new ModelAndView("mapsView", "list", restMindmapList);
|
return new ModelAndView("mapsView", "list", restMindmapList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}", consumes = {"application/xml", "application/json"})
|
@RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}", consumes = {"application/xml", "application/json"},produces = {"application/json", "text/html", "application/xml"})
|
||||||
public ModelAndView updateMap(@RequestBody RestMindmap restMindmap, @PathVariable int id) throws IOException, WiseMappingException {
|
public ModelAndView updateMap(@RequestBody RestMindmap restMindmap, @PathVariable int id) throws IOException, WiseMappingException {
|
||||||
|
|
||||||
final MindMap mindMap = mindmapService.getMindmapById(id);
|
final MindMap mindMap = mindmapService.getMindmapById(id);
|
||||||
@ -70,6 +70,5 @@ public class MindmapController {
|
|||||||
mindmapService.updateMindmap(mindMap, true);
|
mindmapService.updateMindmap(mindMap, true);
|
||||||
|
|
||||||
return new ModelAndView("responseView", "message", "Map has been updated successfully");
|
return new ModelAndView("responseView", "message", "Map has been updated successfully");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,13 @@ package com.wisemapping.service;
|
|||||||
|
|
||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
import com.wisemapping.exceptions.WiseMappingException;
|
import com.wisemapping.exceptions.WiseMappingException;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public interface UserService {
|
public interface UserService {
|
||||||
|
|
||||||
public void activateAcount(long code) throws InvalidActivationCodeException;
|
public void activateAccount(long code) throws InvalidActivationCodeException;
|
||||||
|
|
||||||
public void createUser(User user, boolean emailConfirmEnabled) throws WiseMappingException;
|
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException;
|
||||||
|
|
||||||
public void changePassword(User user);
|
public void changePassword(User user);
|
||||||
|
|
||||||
@ -40,4 +41,6 @@ public interface UserService {
|
|||||||
public void sendEmailPassword(String email) throws InvalidUserEmailException;
|
public void sendEmailPassword(String email) throws InvalidUserEmailException;
|
||||||
|
|
||||||
public User reloadUser(final User user);
|
public User reloadUser(final User user);
|
||||||
|
|
||||||
|
public void deleteUser(@NotNull User user);
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import com.wisemapping.mail.Mailer;
|
|||||||
import com.wisemapping.model.Collaborator;
|
import com.wisemapping.model.Collaborator;
|
||||||
import com.wisemapping.model.User;
|
import com.wisemapping.model.User;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -37,7 +38,7 @@ public class UserServiceImpl
|
|||||||
private Mailer mailer;
|
private Mailer mailer;
|
||||||
final static Logger logger = Logger.getLogger("org.wisemapping.service");
|
final static Logger logger = Logger.getLogger("org.wisemapping.service");
|
||||||
|
|
||||||
public void activateAcount(long code)
|
public void activateAccount(long code)
|
||||||
throws InvalidActivationCodeException {
|
throws InvalidActivationCodeException {
|
||||||
final User user = userManager.getUserByActivationCode(code);
|
final User user = userManager.getUserByActivationCode(code);
|
||||||
if (user == null || user.isActive()) {
|
if (user == null || user.isActive()) {
|
||||||
@ -90,7 +91,11 @@ public class UserServiceImpl
|
|||||||
return lo + i;
|
return lo + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createUser(User user, boolean emailConfirmEnabled) throws WiseMappingException {
|
public void deleteUser(@NotNull User user){
|
||||||
|
userManager.deleteUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public User createUser(@NotNull User user, boolean emailConfirmEnabled) throws WiseMappingException {
|
||||||
final UUID uuid = UUID.randomUUID();
|
final UUID uuid = UUID.randomUUID();
|
||||||
user.setCreationDate(Calendar.getInstance());
|
user.setCreationDate(Calendar.getInstance());
|
||||||
user.setActivationCode(uuid.getLeastSignificantBits());
|
user.setActivationCode(uuid.getLeastSignificantBits());
|
||||||
@ -116,6 +121,7 @@ public class UserServiceImpl
|
|||||||
if (emailConfirmEnabled) {
|
if (emailConfirmEnabled) {
|
||||||
sendRegistrationEmail(user);
|
sendRegistrationEmail(user);
|
||||||
}
|
}
|
||||||
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendRegistrationEmail(User user) {
|
private void sendRegistrationEmail(User user) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
log4j.rootLogger=WARN, stdout, R
|
log4j.rootLogger=WARN, stdout, R
|
||||||
log4j.logger.com.wisemapping=WARN,stdout,R
|
log4j.logger.com.wisemapping=WARN,stdout,R
|
||||||
log4j.logger.org.springframework=WARN,stdout,R
|
log4j.logger.org.springframework=DEBUG,stdout,R
|
||||||
log4j.logger.org.codehaus.jackson=WARN,stdout,R
|
log4j.logger.org.codehaus.jackson=WARN,stdout,R
|
||||||
|
|
||||||
# Stdout logger <20>
|
# Stdout logger <20>
|
||||||
|
Loading…
Reference in New Issue
Block a user