mirror of
https://github.com/sismics/docs.git
synced 2024-11-22 14:07:55 +01:00
Closes #44: Comments visible from share app
+ metadata-complete="true" in web.xml to skip annotations scanning (second try with Jetty 9)
This commit is contained in:
parent
1c7381376c
commit
7e5aa9aecf
@ -32,7 +32,7 @@
|
|||||||
<org.imgscalr.imgscalr-lib.version>4.2</org.imgscalr.imgscalr-lib.version>
|
<org.imgscalr.imgscalr-lib.version>4.2</org.imgscalr.imgscalr-lib.version>
|
||||||
<org.apache.pdfbox.pdfbox.version>2.0.0-RC1</org.apache.pdfbox.pdfbox.version>
|
<org.apache.pdfbox.pdfbox.version>2.0.0-RC1</org.apache.pdfbox.pdfbox.version>
|
||||||
<org.bouncycastle.bcprov-jdk15on.version>1.53</org.bouncycastle.bcprov-jdk15on.version>
|
<org.bouncycastle.bcprov-jdk15on.version>1.53</org.bouncycastle.bcprov-jdk15on.version>
|
||||||
<joda-time.joda-time.version>2.9</joda-time.joda-time.version>
|
<joda-time.joda-time.version>2.9.1</joda-time.joda-time.version>
|
||||||
<org.hibernate.hibernate.version>4.1.0.Final</org.hibernate.hibernate.version>
|
<org.hibernate.hibernate.version>4.1.0.Final</org.hibernate.hibernate.version>
|
||||||
<javax.servlet.javax.servlet-api.version>3.1.0</javax.servlet.javax.servlet-api.version>
|
<javax.servlet.javax.servlet-api.version>3.1.0</javax.servlet.javax.servlet-api.version>
|
||||||
<com.levigo.jbig2.levigo-jbig2-imageio.version>1.6.3</com.levigo.jbig2.levigo-jbig2-imageio.version>
|
<com.levigo.jbig2.levigo-jbig2-imageio.version>1.6.3</com.levigo.jbig2.levigo-jbig2-imageio.version>
|
||||||
|
@ -158,6 +158,9 @@ public class TokenBasedSecurityFilter implements Filter {
|
|||||||
Set<String> baseFunctionSet = userBaseFuction.findByRoleId(user.getRoleId());
|
Set<String> baseFunctionSet = userBaseFuction.findByRoleId(user.getRoleId());
|
||||||
userPrincipal.setBaseFunctionSet(baseFunctionSet);
|
userPrincipal.setBaseFunctionSet(baseFunctionSet);
|
||||||
|
|
||||||
|
// Add email
|
||||||
|
userPrincipal.setEmail(user.getEmail());
|
||||||
|
|
||||||
request.setAttribute(PRINCIPAL_ATTRIBUTE, userPrincipal);
|
request.setAttribute(PRINCIPAL_ATTRIBUTE, userPrincipal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +219,6 @@
|
|||||||
</systemProperties>
|
</systemProperties>
|
||||||
<webApp>
|
<webApp>
|
||||||
<contextPath>/docs-web</contextPath>
|
<contextPath>/docs-web</contextPath>
|
||||||
<overrideDescriptor>src/dev/main/webapp/web-override.xml</overrideDescriptor>
|
|
||||||
</webApp>
|
</webApp>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
xmlns="http://java.sun.com/xml/ns/javaee"
|
xmlns="http://java.sun.com/xml/ns/javaee"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||||
version="3.0">
|
version="3.0"
|
||||||
|
metadata-complete="true">
|
||||||
|
|
||||||
<!-- Override init parameter to avoid nasty file locking issue on windows. -->
|
<!-- Override init parameter to avoid nasty file locking issue on windows. -->
|
||||||
<servlet>
|
<servlet>
|
||||||
|
@ -11,6 +11,7 @@ import javax.ws.rs.GET;
|
|||||||
import javax.ws.rs.PUT;
|
import javax.ws.rs.PUT;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import javax.ws.rs.core.Response.Status;
|
import javax.ws.rs.core.Response.Status;
|
||||||
|
|
||||||
@ -65,8 +66,9 @@ public class CommentResource extends BaseResource {
|
|||||||
// Returns the comment
|
// Returns the comment
|
||||||
JsonObjectBuilder response = Json.createObjectBuilder()
|
JsonObjectBuilder response = Json.createObjectBuilder()
|
||||||
.add("id", comment.getId())
|
.add("id", comment.getId())
|
||||||
.add("creator", principal.getName())
|
|
||||||
.add("content", comment.getContent())
|
.add("content", comment.getContent())
|
||||||
|
.add("creator", principal.getName())
|
||||||
|
.add("creator_gravatar", ImageUtil.computeGravatar(principal.getEmail()))
|
||||||
.add("create_date", comment.getCreateDate().getTime());
|
.add("create_date", comment.getCreateDate().getTime());
|
||||||
return Response.ok().entity(response.build()).build();
|
return Response.ok().entity(response.build()).build();
|
||||||
}
|
}
|
||||||
@ -120,14 +122,13 @@ public class CommentResource extends BaseResource {
|
|||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("{documentId: [a-z0-9\\-]+}")
|
@Path("{documentId: [a-z0-9\\-]+}")
|
||||||
public Response get(@PathParam("documentId") String documentId) {
|
public Response get(@PathParam("documentId") String documentId,
|
||||||
if (!authenticate()) {
|
@QueryParam("share") String shareId) {
|
||||||
throw new ForbiddenClientException();
|
authenticate();
|
||||||
}
|
|
||||||
|
|
||||||
// Read access on doc gives access to read comments
|
// Read access on doc gives access to read comments
|
||||||
DocumentDao documentDao = new DocumentDao();
|
DocumentDao documentDao = new DocumentDao();
|
||||||
if (documentDao.getDocument(documentId, PermType.READ, principal.getId()) == null) {
|
if (documentDao.getDocument(documentId, PermType.READ, shareId == null ? principal.getId() : shareId) == null) {
|
||||||
return Response.status(Status.NOT_FOUND).build();
|
return Response.status(Status.NOT_FOUND).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
xmlns="http://java.sun.com/xml/ns/javaee"
|
xmlns="http://java.sun.com/xml/ns/javaee"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||||
version="3.0">
|
version="3.0"
|
||||||
|
metadata-complete="true">
|
||||||
<display-name>Docs</display-name>
|
<display-name>Docs</display-name>
|
||||||
|
|
||||||
<!-- This filter is used to process a couple things in the request context -->
|
<!-- This filter is used to process a couple things in the request context -->
|
||||||
@ -55,4 +56,6 @@
|
|||||||
<servlet-name>JerseyServlet</servlet-name>
|
<servlet-name>JerseyServlet</servlet-name>
|
||||||
<url-pattern>/api/*</url-pattern>
|
<url-pattern>/api/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<absolute-ordering/>
|
||||||
</web-app>
|
</web-app>
|
||||||
|
@ -20,6 +20,13 @@ angular.module('share').controller('Share', function($scope, $state, $stateParam
|
|||||||
$scope.files = data.files;
|
$scope.files = data.files;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Load comments from server
|
||||||
|
Restangular.one('comment', $stateParams.documentId).get({ share: $stateParams.shareId }).then(function(data) {
|
||||||
|
$scope.comments = data.comments;
|
||||||
|
}, function(response) {
|
||||||
|
$scope.commentsError = response;
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Navigate to the selected file.
|
* Navigate to the selected file.
|
||||||
*/
|
*/
|
||||||
|
@ -74,9 +74,7 @@
|
|||||||
|
|
||||||
<div ng-repeat="comment in comments" class="media" style="overflow: hidden">
|
<div ng-repeat="comment in comments" class="media" style="overflow: hidden">
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
<a href="#">
|
<img ng-src="http://www.gravatar.com/avatar/{{ comment.creator_gravatar }}?s=40&d=identicon" class="media-object" />
|
||||||
<img ng-src="http://www.gravatar.com/avatar/{{ comment.creator_gravatar }}?s=40&d=identicon" class="media-object" />
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="media-body">
|
<div class="media-body">
|
||||||
<strong>{{ comment.creator }}</strong>
|
<strong>{{ comment.creator }}</strong>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="well col-md-12">
|
<div class="col-md-10">
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<h1>
|
<h1>
|
||||||
{{ document.title }} <small>{{ document.create_date | date: 'yyyy-MM-dd' }}</small>
|
{{ document.title }} <small>{{ document.create_date | date: 'yyyy-MM-dd' }}</small>
|
||||||
@ -26,4 +26,31 @@
|
|||||||
|
|
||||||
<div ui-view="file"></div>
|
<div ui-view="file"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<p class="page-header">
|
||||||
|
<span class="glyphicon glyphicon-comment"></span>
|
||||||
|
Comments
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div ng-show="!comments || comments.length == 0" class="text-center text-muted">
|
||||||
|
<h1 class="glyphicon glyphicon-comment"></h1>
|
||||||
|
<p ng-show="!comments && !commentsError">Loading...</p>
|
||||||
|
<p ng-show="comments.length == 0">No comments on this document yet</p>
|
||||||
|
<p ng-show="!comments && commentsError">Error loading comments</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div ng-repeat="comment in comments" class="media" style="overflow: hidden">
|
||||||
|
<div class="pull-left">
|
||||||
|
<img ng-src="http://www.gravatar.com/avatar/{{ comment.creator_gravatar }}?s=40&d=identicon" class="media-object" />
|
||||||
|
</div>
|
||||||
|
<div class="media-body">
|
||||||
|
<strong>{{ comment.creator }}</strong>
|
||||||
|
<p>
|
||||||
|
{{ comment.content }}<br />
|
||||||
|
<span class="text-muted">{{ comment.create_date | date: 'yyyy-MM-dd' }}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<web-app id="docs"
|
|
||||||
xmlns="http://java.sun.com/xml/ns/javaee"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
|
||||||
version="3.0">
|
|
||||||
|
|
||||||
<!-- Override init parameter to avoid nasty file locking issue on windows. -->
|
|
||||||
<servlet>
|
|
||||||
<servlet-name>default</servlet-name>
|
|
||||||
<init-param>
|
|
||||||
<param-name>useFileMappedBuffer</param-name>
|
|
||||||
<param-value>false</param-value>
|
|
||||||
</init-param>
|
|
||||||
</servlet>
|
|
||||||
</web-app>
|
|
@ -78,6 +78,14 @@ public class TestShareResource extends BaseJerseyTest {
|
|||||||
Assert.assertEquals(document1Id, json.getString("id"));
|
Assert.assertEquals(document1Id, json.getString("id"));
|
||||||
Assert.assertEquals(3, json.getJsonArray("acls").size()); // 2 for the creator, 1 for the share
|
Assert.assertEquals(3, json.getJsonArray("acls").size()); // 2 for the creator, 1 for the share
|
||||||
|
|
||||||
|
// Get all comments from this document anonymously
|
||||||
|
json = target().path("/comment/" + document1Id)
|
||||||
|
.queryParam("share", share1Id)
|
||||||
|
.request()
|
||||||
|
.get(JsonObject.class);
|
||||||
|
JsonArray comments = json.getJsonArray("comments");
|
||||||
|
Assert.assertEquals(0, comments.size());
|
||||||
|
|
||||||
// Get all files from this document anonymously
|
// Get all files from this document anonymously
|
||||||
json = target().path("/file/list")
|
json = target().path("/file/list")
|
||||||
.queryParam("id", document1Id)
|
.queryParam("id", document1Id)
|
||||||
|
Loading…
Reference in New Issue
Block a user