diff --git a/src/main/java/com/commafeed/backend/StartupBean.java b/src/main/java/com/commafeed/backend/StartupBean.java index 173611d3..b35e527a 100644 --- a/src/main/java/com/commafeed/backend/StartupBean.java +++ b/src/main/java/com/commafeed/backend/StartupBean.java @@ -26,6 +26,7 @@ import com.commafeed.backend.security.Role; public class StartupBean { private static Logger log = LoggerFactory.getLogger(StartupBean.class); + public static final String ADMIN_NAME = "admin"; @Inject FeedService feedService; @@ -48,7 +49,7 @@ public class StartupBean { if (userService.getCount() == 0) { log.info("Populating database with default values"); - User user = userService.register("admin", "admin", + User user = userService.register(ADMIN_NAME, "admin", Arrays.asList(Role.ADMIN, Role.USER)); userService.register("test", "test", Arrays.asList(Role.USER)); diff --git a/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/src/main/java/com/commafeed/backend/dao/GenericDAO.java index 67c6aee5..5a0b3330 100644 --- a/src/main/java/com/commafeed/backend/dao/GenericDAO.java +++ b/src/main/java/com/commafeed/backend/dao/GenericDAO.java @@ -52,8 +52,10 @@ public abstract class GenericDAO implements } public void delete(T object) { - object = em.merge(object); - em.remove(object); + if (object != null) { + object = em.merge(object); + em.remove(object); + } } public void delete(List objects) { @@ -64,7 +66,9 @@ public abstract class GenericDAO implements public void deleteById(Long id) { Object ref = em.getReference(getType(), id); - em.remove(ref); + if (ref != null) { + em.remove(ref); + } } public T findById(Long id) { diff --git a/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java b/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java index cb8ba737..1202bacf 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminUsersREST.java @@ -4,7 +4,6 @@ import java.util.Collection; import java.util.Map; import java.util.Set; -import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; @@ -14,6 +13,7 @@ import javax.ws.rs.core.Response.Status; import org.apache.commons.lang.StringUtils; +import com.commafeed.backend.StartupBean; import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserRole; import com.commafeed.backend.security.Role; @@ -113,12 +113,15 @@ public class AdminUsersREST extends AbstractREST { } @Path("delete") - @DELETE + @GET public Response delete(@QueryParam("id") Long id) { User user = userService.findById(id); if (user == null) { return Response.status(Status.NOT_FOUND).build(); } + if (StartupBean.ADMIN_NAME.equals(user.getName())) { + return Response.status(Status.FORBIDDEN).build(); + } feedEntryStatusService.delete(feedEntryStatusService.findAll(user)); feedSubscriptionService.delete(feedSubscriptionService.findAll(user)); feedCategoryService.delete(feedCategoryService.findAll(user)); diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 0538dc92..8323c125 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -150,7 +150,7 @@ module.factory('AdminUsersService', function($resource) { } }, delete : { - method : 'DELETE', + method : 'GET', params : { _method : 'delete' }