Skip to content

Commit

Permalink
Added Authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasvoelk committed Feb 4, 2012
1 parent 3d1abec commit 1b655ce
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 82 deletions.
24 changes: 24 additions & 0 deletions java/src/org/voelk/holidays/web/GaeAuthenticator.java
@@ -0,0 +1,24 @@
package org.voelk.holidays.web;

import com.google.appengine.api.users.*;
import org.restlet.*;
import org.restlet.data.*;
import org.restlet.security.*;

public class GaeAuthenticator extends ChallengeAuthenticator {
public GaeAuthenticator(Context context, ChallengeScheme challengeScheme, String realm) {
super(context, challengeScheme, realm);
}

@Override
protected boolean authenticate(Request request, Response response) {
if (!UserServiceFactory.getUserService().isUserLoggedIn()) {
String path = request.getOriginalRef().getPath();
String loginURL = UserServiceFactory.getUserService().createLoginURL(path);
response.redirectTemporary(loginURL);
return false;
} else {
return true;
}
}
}
27 changes: 20 additions & 7 deletions java/src/org/voelk/holidays/web/HolidayApplication.java
@@ -1,13 +1,16 @@
package org.voelk.holidays.web;

import freemarker.template.*;
import org.restlet.*;
import org.restlet.data.*;
import org.restlet.resource.*;
import org.restlet.ext.freemarker.*;
import org.restlet.routing.*;
import org.voelk.holidays.web.pages.*;
import org.voelk.holidays.web.webservices.*;

import java.util.*;
public class HolidayApplication extends Application {

public abstract class HolidayApplication extends Application {
private Configuration configuration;

public HolidayApplication() {
getConnectorService().getClientProtocols().add(Protocol.WAR);
Expand All @@ -16,12 +19,22 @@ public HolidayApplication() {

@Override
public Restlet createInboundRoot() {
configuration = new Configuration();
configuration.setTemplateLoader(new ContextTemplateLoader(getContext(),
"war:///WEB-INF/templates/pages"));
configuration.setDefaultEncoding("UTF-8");
Router router = new Router(getContext());
for (Map.Entry<String, Class<? extends ServerResource>> entry : getRoutes().entrySet()) {
router.attach(entry.getKey(), entry.getValue());
}
router.attach("/public/calculate/neededDays", HolidayCalculatorWebserviceResource.class);
router.attach("/public/calculator", CalculatorPageResource.class);
Router secureRouter = new Router(getContext());
secureRouter.attach("/calculator", CalculatorPageResource.class);
GaeAuthenticator authenticator = new GaeAuthenticator(getContext(), ChallengeScheme.CUSTOM, "System Authentication - Provide your credentials");
authenticator.setNext(secureRouter);
router.attach("/private", authenticator, org.restlet.routing.Template.MODE_STARTS_WITH);
return router;
}

protected abstract Map<String, Class<? extends ServerResource>> getRoutes();
public Configuration getConfiguration() {
return configuration;
}
}
34 changes: 0 additions & 34 deletions java/src/org/voelk/holidays/web/HolidayPagesApplication.java

This file was deleted.

16 changes: 0 additions & 16 deletions java/src/org/voelk/holidays/web/HolidayWebservicesApplication.java

This file was deleted.

14 changes: 11 additions & 3 deletions java/src/org/voelk/holidays/web/pages/PageResource.java
Expand Up @@ -10,15 +10,23 @@

public abstract class PageResource extends ServerResource {
@Override
public HolidayPagesApplication getApplication() {
return (HolidayPagesApplication) super.getApplication();
public HolidayApplication getApplication() {
return (HolidayApplication) super.getApplication();
}

@Get
public Representation toHtml() {
return toRepresentation();
}

protected Map<String, Object> createPageData() {
Map<String, Object> ret = getPageData();
// String s1 = getRequest().getRootRef().getPath();
// String s2 = getRequest().getRootRef().toString();
// ret.put("pageContext", s1);
return ret;
}

protected MediaType getMediaType() {
return MediaType.TEXT_HTML;
}
Expand All @@ -28,6 +36,6 @@ protected MediaType getMediaType() {
protected abstract Map<String, Object> getPageData();

protected Representation toRepresentation() {
return new TemplateRepresentation(getTemplatePath(), getApplication().getConfiguration(), getPageData(), getMediaType());
return new TemplateRepresentation(getTemplatePath(), getApplication().getConfiguration(), createPageData(), getMediaType());
}
}
6 changes: 3 additions & 3 deletions web/WEB-INF/templates/pages/basePage.ftl
Expand Up @@ -11,13 +11,13 @@
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/i18n/jquery.ui.datepicker-de.js"
type="text/javascript"></script>
<script src="js/jquery.form.js" type="text/javascript"></script>
<script src="/js/jquery.form.js" type="text/javascript"></script>
<script src="http://www.planbox.com/feedback/feedback.js" type="text/javascript"></script>
<link type="text/css" rel="stylesheet" href="css/reset.css">
<link type="text/css" rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/sunny/jquery-ui.css"
type="text/css" media="all"/>
<link href="http://www.planbox.com/feedback/feedback.css" rel="stylesheet" type="text/css"/>
<link type="text/css" rel="stylesheet" href="css/holidays.css">
<link type="text/css" rel="stylesheet" href="/css/holidays.css">
</head>
<body>
<script type="text/javascript">
Expand Down
4 changes: 2 additions & 2 deletions web/WEB-INF/templates/pages/calculator.ftl
@@ -1,7 +1,7 @@
<#import "basePage.ftl" as master>
<@master.page>
<script type="text/javascript" src="js/calculator.js"></script>
<form id="calculationForm" action="/rest/public/calculate/neededDays" method="get">
<script type="text/javascript" src="/js/calculator.js"></script>
<form id="calculationForm" action="/app/public/calculate/neededDays" method="get">
<h1>Urlaubsplanung</h1>

<div id="calendar">
Expand Down
22 changes: 5 additions & 17 deletions web/WEB-INF/web.xml
Expand Up @@ -4,33 +4,21 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>HolidayWebservices</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>org.voelk.holidays.web.HolidayWebservicesApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HolidayWebservices</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>HolidayPages</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>org.voelk.holidays.web.HolidayPagesApplication</param-value>
<param-value>org.voelk.holidays.web.HolidayApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HolidayPages</servlet-name>
<url-pattern>/pages/*</url-pattern>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>pages/public/calculator</welcome-file>
</welcome-file-list>
<!--<welcome-file-list>-->
<!--<welcome-file>restlet/private/calculator</welcome-file>-->
<!--</welcome-file-list>-->
<!--<security-constraint>-->
<!--<web-resource-collection>-->
<!--<web-resource-name>all</web-resource-name>-->
Expand Down
2 changes: 2 additions & 0 deletions web/index.html
Expand Up @@ -5,5 +5,7 @@
<title>Holiday Planner</title>
</head>
<body>
<a href="app/public/calculator">Public</a>
<a href="app/private/calculator">Private</a>
</body>
</html>

0 comments on commit 1b655ce

Please sign in to comment.