From 09c91106f8e03735e707e3f59bb82edcead46a8c Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 29 Mar 2013 16:05:29 +0100 Subject: [PATCH] admin implementation --- .../com/commafeed/backend/model/User.java | 3 +- .../commafeed/frontend/model/UserModel.java | 39 +++++++++++++++++++ .../frontend/rest/RESTApplication.java | 2 + .../frontend/rest/resources/AdminREST.java | 38 ++++++++++++++++++ src/main/webapp/js/main.js | 26 +++++++------ 5 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/commafeed/frontend/model/UserModel.java create mode 100644 src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java diff --git a/src/main/java/com/commafeed/backend/model/User.java b/src/main/java/com/commafeed/backend/model/User.java index a42ffc5f..e8d759d4 100644 --- a/src/main/java/com/commafeed/backend/model/User.java +++ b/src/main/java/com/commafeed/backend/model/User.java @@ -5,7 +5,6 @@ import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.FetchType; import javax.persistence.OneToMany; import javax.persistence.Table; @@ -31,7 +30,7 @@ public class User extends AbstractModel { @Column(nullable = false) private boolean disabled; - @OneToMany(mappedBy = "user", cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) + @OneToMany(mappedBy = "user", cascade = CascadeType.PERSIST) private Set roles = Sets.newHashSet(); public String getName() { diff --git a/src/main/java/com/commafeed/frontend/model/UserModel.java b/src/main/java/com/commafeed/frontend/model/UserModel.java new file mode 100644 index 00000000..813718ab --- /dev/null +++ b/src/main/java/com/commafeed/frontend/model/UserModel.java @@ -0,0 +1,39 @@ +package com.commafeed.frontend.model; + +import java.io.Serializable; +import java.util.Set; + +import com.google.common.collect.Sets; + +@SuppressWarnings("serial") +public class UserModel implements Serializable { + + private String name; + private Set roles = Sets.newHashSet(); + private boolean enabled; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getRoles() { + return roles; + } + + public void setRoles(Set roles) { + this.roles = roles; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + +} diff --git a/src/main/java/com/commafeed/frontend/rest/RESTApplication.java b/src/main/java/com/commafeed/frontend/rest/RESTApplication.java index e5774201..20c25752 100644 --- a/src/main/java/com/commafeed/frontend/rest/RESTApplication.java +++ b/src/main/java/com/commafeed/frontend/rest/RESTApplication.java @@ -5,6 +5,7 @@ import java.util.Set; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; +import com.commafeed.frontend.rest.resources.AdminREST; import com.commafeed.frontend.rest.resources.EntriesREST; import com.commafeed.frontend.rest.resources.SettingsREST; import com.commafeed.frontend.rest.resources.SubscriptionsREST; @@ -21,6 +22,7 @@ public class RESTApplication extends Application { set.add(SubscriptionsREST.class); set.add(EntriesREST.class); set.add(SettingsREST.class); + set.add(AdminREST.class); return set; } } diff --git a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java new file mode 100644 index 00000000..7102c18b --- /dev/null +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java @@ -0,0 +1,38 @@ +package com.commafeed.frontend.rest.resources; + +import java.util.Collection; +import java.util.Map; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +import com.commafeed.backend.model.User; +import com.commafeed.backend.model.UserRole; +import com.commafeed.backend.security.Role; +import com.commafeed.frontend.model.UserModel; +import com.commafeed.frontend.rest.SecurityCheck; +import com.google.common.collect.Maps; + +@SecurityCheck(Role.ADMIN) +@Path("admin") +public class AdminREST extends AbstractREST { + + @Path("users/get") + @GET + public Collection getUsers() { + Map users = Maps.newHashMap(); + for (UserRole role : userRoleService.findAll()) { + User user = role.getUser(); + Long key = user.getId(); + UserModel userModel = users.get(key); + if (userModel == null) { + userModel = new UserModel(); + userModel.setName(user.getName()); + userModel.setEnabled(!user.isDisabled()); + users.put(key, userModel); + } + userModel.getRoles().add(role.getRole()); + } + return users.values(); + } +} diff --git a/src/main/webapp/js/main.js b/src/main/webapp/js/main.js index 88246dce..a4dffb8d 100644 --- a/src/main/webapp/js/main.js +++ b/src/main/webapp/js/main.js @@ -1,28 +1,30 @@ var app = angular.module('commafeed', [ 'ui', 'ui.bootstrap', 'ui.state', - 'commafeed.directives', 'commafeed.controllers', 'commafeed.services', + 'commafeed.directives', 'commafeed.controllers', 'commafeed.services', 'ngSanitize', 'ngUpload', 'infinite-scroll' ]); -app.config(function($urlRouterProvider, $stateProvider) { +app.config(function($routeProvider, $stateProvider, $urlRouterProvider) { $stateProvider.state('feeds', { - abstract: true, - url: '/feeds', - templateUrl: 'templates/feeds.html' + abstract : true, + url : '/feeds', + templateUrl : 'templates/feeds.html' }); $stateProvider.state('feeds.view', { - url: '/view/:_type/:_id', + url : '/view/:_type/:_id', templateUrl : 'templates/feeds.view.html' }); - + $stateProvider.state('admin', { - abstract: true, - url: '/admin', - templateUrl: 'templates/admin.html' + abstract : true, + url : '/admin', + templateUrl : 'templates/admin.html' }); $stateProvider.state('admin.users', { - url: '/users', + url : '/users', templateUrl : 'templates/admin.users.html' }); - + $urlRouterProvider.when('/', '/feeds/view/category/all'); $urlRouterProvider.when('/admin', '/admin/users'); + $urlRouterProvider.otherwise('/'); + }); \ No newline at end of file