diff --git a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java index 75311270b9d8c131dd33bcc6012c86353753ab33..2ac7d351b2549ce7107a965041b1b47a82e4fde4 100644 --- a/src/main/java/org/hbp/mip/controllers/ArticlesApi.java +++ b/src/main/java/org/hbp/mip/controllers/ArticlesApi.java @@ -56,7 +56,7 @@ public class ArticlesApi { } else { - queryString += " AND status='published'"; + queryString += " AND (status='published' or u.username= :username)"; if(team != null && team) { // TODO: decide if this is needed @@ -72,14 +72,7 @@ public class ArticlesApi { if (status != null) { query.setString("status", status); } - if (own != null && own) { - query.setString("username", user.getUsername()); - } else { - if (team != null && team) { - // TODO: decide if this is needed - //query.setString("team", user.getTeam()); - } - } + query.setString("username", user.getUsername()); articles = query.list(); session.getTransaction().commit(); } catch (Exception e) diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java index 98e29e4247f49adb9bc7ca5b259e60bb6e91bb1a..b7f3338edba6bebf546bfdd015993563dbc4ad03 100644 --- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java +++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java @@ -39,18 +39,24 @@ public class ModelsApi { public ResponseEntity<List<Model>> getModels( @ApiParam(value = "Max number of results") @RequestParam(value = "limit", required = false) Integer limit, @ApiParam(value = "Only ask own models") @RequestParam(value = "own", required = false) Boolean own, - @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team + @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team, + @ApiParam(value = "Only ask published models") @RequestParam(value = "valid", required = false) Boolean valid ) { User user = mipApplication.getUser(); String queryString = "SELECT m FROM Model m, User u WHERE m.createdBy=u.username"; + if(valid != null && valid) + { + queryString += " AND m.valid= :valid"; + } if(own != null && own) { queryString += " AND u.username= :username"; } else { + queryString += " AND (m.valid=true or u.username= :username)"; if(team != null && team) { // TODO: decide if this is needed @@ -63,18 +69,11 @@ public class ModelsApi { try{ session.beginTransaction(); Query query = session.createQuery(queryString); - if(own != null && own) + if(valid != null) { - query.setString("username", user.getUsername()); - } - else - { - if(team != null && team) - { - // TODO: decide if this is needed - //query.setString("team", user.getTeam()); - } + query.setBoolean("valid", valid); } + query.setString("username", user.getUsername()); if(limit != null) { query.setMaxResults(limit); // Pagination : Use query.setFirstResult(...) to set begining index @@ -104,9 +103,12 @@ public class ModelsApi { User user = mipApplication.getUser(); model.setTitle(model.getConfig().getTitle().get("text")); - model.setValid(true); model.setCreatedBy(user); model.setCreatedAt(new Date()); + if(model.getValid() == null) + { + model.setValid(false); + } Long count; Session session = HibernateUtil.getSessionFactory().getCurrentSession(); @@ -183,6 +185,8 @@ public class ModelsApi { @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug ) { + User user = mipApplication.getUser(); + Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Model model = null; Query query; @@ -195,6 +199,11 @@ public class ModelsApi { .uniqueResult(); session.getTransaction().commit(); + if (!model.getValid() && !model.getCreatedBy().getUsername().equals(user.getUsername())) + { + return ResponseEntity.status(HttpStatus.FORBIDDEN).body(null); + } + } catch (Exception e) { if(session.getTransaction() != null)