1 | package eu.clarin.cmdi.virtualcollectionregistry.gui.pages; |
---|
2 | |
---|
3 | import java.security.Principal; |
---|
4 | |
---|
5 | import javax.servlet.http.HttpServletRequest; |
---|
6 | |
---|
7 | import org.apache.wicket.RestartResponseException; |
---|
8 | import org.apache.wicket.markup.html.WebPage; |
---|
9 | import org.apache.wicket.model.Model; |
---|
10 | |
---|
11 | import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession; |
---|
12 | |
---|
13 | public 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 |
---|