Prechádzať zdrojové kódy

Added AuthFilter (disabled)

Lukas Cerny 4 rokov pred
rodič
commit
ad9264f319

+ 30 - 0
src/main/java/io/senslog/ws/filter/AuthFilter.java

@@ -0,0 +1,30 @@
+package io.senslog.ws.filter;
+
+import io.senslog.ws.model.WSError;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import java.io.IOException;
+
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+
+// @PreMatching @Provider
+public class AuthFilter implements ContainerRequestFilter {
+
+    @Override
+    public void filter(ContainerRequestContext requestContext) throws IOException {
+
+        String xAuth = requestContext.getHeaderString("x-auth");
+
+        if (xAuth == null || xAuth.isEmpty()) {
+            requestContext.abortWith(Response
+                    .status(Response.Status.UNAUTHORIZED)
+                    .type(APPLICATION_JSON)
+                    .entity(new WSError("Unauthorized. You have to login at first.").toJson())
+                    .build());
+        }
+    }
+}

+ 3 - 5
src/main/java/io/senslog/ws/handler/ExceptionHandler.java

@@ -1,7 +1,7 @@
 package io.senslog.ws.handler;
 
 import io.senslog.ws.WSException;
-import net.sf.json.JSONObject;
+import io.senslog.ws.model.WSError;
 
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.ExceptionMapper;
@@ -12,10 +12,8 @@ public class ExceptionHandler implements ExceptionMapper<WSException> {
 
     @Override
     public Response toResponse(WSException exception) {
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("timestamp", System.currentTimeMillis());
-        jsonObject.put("message", exception.getMessage());
         return Response.status(exception.getCode())
-                .entity(jsonObject.toString()).build();
+                .entity(new WSError(exception.getMessage()).toJson())
+                .build();
     }
 }

+ 20 - 0
src/main/java/io/senslog/ws/model/WSError.java

@@ -0,0 +1,20 @@
+package io.senslog.ws.model;
+
+import net.sf.json.JSONObject;
+
+public class WSError implements WSObject {
+
+    private final String message;
+
+    public WSError(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public String toJson() {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("timestamp", System.currentTimeMillis());
+        jsonObject.put("message", message);
+        return jsonObject.toString();
+    }
+}