-
User guide
- Part 1 - Introduction
- Part 2 - Core Restlet
- Part 3 - Restlet Editions
- Part 4 - Restlet Extensions
- Appendices
- Tutorials
- Javadocs
- Change Log
GAE extension
Introduction
This extension provides an integration with the Google App Engine API. For details on Google App Engine (aka GAE), see the home page.
Description
At the time of writing, this extension provides an Authenticator filter that integrates the GAE UserService and detect if the current request is auithenticated using a Google account. For additional details, please consult the Javadocs.
User example
This sample code illustrates how to use the Authenticator and the Enroler provided by the GAE extension. These features are used by the Application deployed to the Google App Engine platform.
Usage of the GaeAuthenticator filter
The GaeAuthenticator is able to check wether or not the current request is sent by a logged user. In case the authenticator is not optional, the user is automatically redirected to the standard login page.
GaeAuthenticator guard = new GaeAuthenticator(getContext());
// Attach the guarded hierarchy of URIs to the Authenticator filter
guard.setNext(adminRouter);
// Attach this guarded set of URIs
router.attach("/admin", guard);
Usage of the GaeEnroler
The GaeEnroler checks wether the current logged user can adminstrate the deployed application and completes the list of user’s roles with a defined aministrator role. It is used in conjunction with the GaeAuthenticator filter described above.
/** Administrative role. */
private Role adminRole = new Role("admin", "Administractive role");
/**
* Constructor.
*/
public TestServerApplication() {
// Add The administration role to the application.
getRoles().add(adminRole);
}
@Override
public Restlet createInboundRoot() {
[...]
// Guard this hierarchy of URIs
GaeAuthenticator guard = new GaeAuthenticator(getContext());
// Set the Enroler that will set the Admin Role according to the right of the logged user's.
guard.setEnroler(new GaeEnroler(adminRole));
guard.setNext(adminRouter);
[...]
}
Thanks to the Enroler, a resource can check if the current request is sent by an administrator:
@Override
protected void doInit() throws ResourceException {
if (isInRole("admin")) {
// logged as admin
[...]
}
}