source: VirtualCollectionRegistry/branches/VirtualCollectionRegistry-1.0-beta/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BasePage.java @ 5596

Last change on this file since 5596 was 5596, checked in by Twan Goosen, 10 years ago

created a branch for VCR 1.0-beta. Trunk now 1.1-SNAPSHOT

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
2
3import eu.clarin.cmdi.virtualcollectionregistry.AdminUsersService;
4import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
5import java.security.Principal;
6import javax.servlet.http.HttpServletRequest;
7import org.apache.wicket.RestartResponseException;
8import org.apache.wicket.WicketRuntimeException;
9import org.apache.wicket.markup.html.WebPage;
10import org.apache.wicket.markup.html.link.BookmarkablePageLink;
11import org.apache.wicket.markup.html.panel.FeedbackPanel;
12import org.apache.wicket.model.IModel;
13import org.apache.wicket.model.Model;
14import org.apache.wicket.spring.injection.annot.SpringBean;
15
16public class BasePage extends WebPage {
17
18    @SpringBean
19    private AdminUsersService adminUsersService;
20
21    protected BasePage(IModel<?> model) {
22        super(model);
23        // authentication state
24        add(new AuthenticationStatePanel("authstate"));
25
26        // main navigation menu
27        final Menu menu = new Menu("menu");
28        menu.addMenuItem(new MenuItem<>(Model.of("Virtual Collections"),
29                BrowsePublicCollectionsPage.class));
30        menu.addMenuItem(new MenuItem<>(Model.of("My Virtual Collections"),
31                BrowsePrivateCollectionsPage.class));
32        menu.addMenuItem(new MenuItem<>(Model.of("Create Virtual Collection"),
33                CreateVirtualCollectionPage.class));
34        menu.addMenuItem(new MenuItem<>(Model.of("Help"),
35                HelpPage.class));       
36        menu.addMenuItem(new MenuItem<>(Model.of("Admin Page"),
37                AdminPage.class));
38        add(menu);
39
40        add(new FeedbackPanel("feedback"));
41
42        add(new BookmarkablePageLink("homelink", getApplication().getHomePage())
43                .setAutoEnable(false));
44        add(new BookmarkablePageLink("aboutlink", AboutPage.class)
45                .setAutoEnable(false));
46
47    }
48
49    protected BasePage() {
50        this(null);
51    }
52
53    @Override
54    protected void onBeforeRender() {
55        // skip lazy auto-auth for login page
56        if (!this.getClass().isInstance(LoginPage.class)) {
57            final HttpServletRequest request
58                    = getWebRequestCycle().getWebRequest().getHttpServletRequest();
59            final ApplicationSession session
60                    = (ApplicationSession) getSession();
61            if (!session.isSignedIn()) {
62                if (request.getAuthType() != null) {
63                    // FIXME: better logging
64                    System.err.println("Auth, but no authed session -> login");
65                    final Principal principal = request.getUserPrincipal();
66                    if (!session.signIn(principal)) {
67                        throw new RestartResponseException(getApplication()
68                                .getApplicationSettings()
69                                .getAccessDeniedPage());
70                    }
71                }
72            } else {
73                if (request.getAuthType() == null) {
74                    // FIXME: better logging
75                    System.err.println("Lost Session!");
76                    session.invalidate();
77                    throw new RestartResponseException(getApplication()
78                            .getApplicationSettings()
79                            .getPageExpiredErrorPage());
80                }
81            }
82        }
83        super.onBeforeRender();
84    }
85
86    protected Principal getUser() {
87        ApplicationSession session = (ApplicationSession) getSession();
88        Principal principal = session.getPrincipal();
89        if (principal == null) {
90            throw new WicketRuntimeException("principal == null");
91        }
92        return principal;
93    }
94
95    protected boolean isUserAdmin() {
96        final String userName = getUser().getName();
97        return userName != null && adminUsersService.isAdmin(userName);
98    }
99
100    @Override
101    public ApplicationSession getSession() {
102        return (ApplicationSession) super.getSession();
103    }
104
105} // class BasePage
Note: See TracBrowser for help on using the repository browser.