source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BasePage.java @ 939

Last change on this file since 939 was 939, checked in by oschonef, 14 years ago
  • Property svn:eol-style set to native
File size: 2.7 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
2
3import java.security.Principal;
4
5import javax.servlet.http.HttpServletRequest;
6
7import org.apache.wicket.RestartResponseException;
8import org.apache.wicket.markup.html.WebPage;
9import org.apache.wicket.model.Model;
10
11import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
12
13public class BasePage extends WebPage {
14
15    protected BasePage() {
16        super();
17        // authentication state
18        add(new AuthenticationStatePanel("authstate"));
19
20        // main navigation menu
21        final Menu menu = new Menu("menu");
22        menu.addMenuItem(new MenuItem<BrowsePublicCollectionsPage>(
23                new Model<String>("Virtual Collections"), 
24                BrowsePublicCollectionsPage.class));
25        menu.addMenuItem(new MenuItem<BrowsePrivateCollectionsPage>(
26                new Model<String>("My Virtual Collections"),
27                BrowsePrivateCollectionsPage.class));
28        menu.addMenuItem(new MenuItem<CreateVirtualCollectionPage>(
29                new Model<String>("Create Virtual Collection"),
30                CreateVirtualCollectionPage.class));
31        menu.addMenuItem(new MenuItem<AdminPage>(
32                new Model<String>("Admin Page"),
33                AdminPage.class));
34        add(menu);
35    }
36
37    @Override
38    protected void onBeforeRender() {
39        // skip lazy auto-auth for login page
40        if (!this.getClass().isInstance(LoginPage.class)) {
41            final HttpServletRequest request =
42                getWebRequestCycle().getWebRequest().getHttpServletRequest();
43            final ApplicationSession session =
44                (ApplicationSession) getSession();
45            if (!session.isSignedIn()) {
46                if (request.getAuthType() != null) {
47                    // FIXME: better logging
48                    System.err.println("Auth, but no authed session -> login");
49                    final Principal principal = request.getUserPrincipal();
50                    if (!session.signIn(principal)) {
51                        throw new RestartResponseException(getApplication()
52                                .getApplicationSettings()
53                                .getAccessDeniedPage());
54                    }
55                }
56            } else {
57                if (request.getAuthType() == null) {
58                    // FIXME: better logging
59                    System.err.println("Lost Session!");
60                    session.invalidate();
61                    throw new RestartResponseException(getApplication()
62                            .getApplicationSettings()
63                            .getPageExpiredErrorPage());
64                }
65            }
66        }
67        super.onBeforeRender();
68    }
69
70} // class BasePage
Note: See TracBrowser for help on using the repository browser.