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

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

Created an 'about' page
Fixes #617

  • Property svn:eol-style set to native
File size: 4.0 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<BrowsePublicCollectionsPage>(
29                new Model<String>("Virtual Collections"),
30                BrowsePublicCollectionsPage.class));
31        menu.addMenuItem(new MenuItem<BrowsePrivateCollectionsPage>(
32                new Model<String>("My Virtual Collections"),
33                BrowsePrivateCollectionsPage.class));
34        menu.addMenuItem(new MenuItem<CreateVirtualCollectionPage>(
35                new Model<String>("Create Virtual Collection"),
36                CreateVirtualCollectionPage.class));
37        menu.addMenuItem(new MenuItem<AdminPage>(
38                new Model<String>("Admin Page"),
39                AdminPage.class));
40        add(menu);
41
42        add(new FeedbackPanel("feedback"));
43
44        add(new BookmarkablePageLink("homelink", getApplication().getHomePage())
45                .setAutoEnable(false));
46        add(new BookmarkablePageLink("aboutlink", AboutPage.class)
47                .setAutoEnable(false));
48
49    }
50
51    protected BasePage() {
52        this(null);
53    }
54
55    @Override
56    protected void onBeforeRender() {
57        // skip lazy auto-auth for login page
58        if (!this.getClass().isInstance(LoginPage.class)) {
59            final HttpServletRequest request
60                    = getWebRequestCycle().getWebRequest().getHttpServletRequest();
61            final ApplicationSession session
62                    = (ApplicationSession) getSession();
63            if (!session.isSignedIn()) {
64                if (request.getAuthType() != null) {
65                    // FIXME: better logging
66                    System.err.println("Auth, but no authed session -> login");
67                    final Principal principal = request.getUserPrincipal();
68                    if (!session.signIn(principal)) {
69                        throw new RestartResponseException(getApplication()
70                                .getApplicationSettings()
71                                .getAccessDeniedPage());
72                    }
73                }
74            } else {
75                if (request.getAuthType() == null) {
76                    // FIXME: better logging
77                    System.err.println("Lost Session!");
78                    session.invalidate();
79                    throw new RestartResponseException(getApplication()
80                            .getApplicationSettings()
81                            .getPageExpiredErrorPage());
82                }
83            }
84        }
85        super.onBeforeRender();
86    }
87
88    protected Principal getUser() {
89        ApplicationSession session = (ApplicationSession) getSession();
90        Principal principal = session.getPrincipal();
91        if (principal == null) {
92            throw new WicketRuntimeException("principal == null");
93        }
94        return principal;
95    }
96
97    protected boolean isUserAdmin() {
98        final String userName = getUser().getName();
99        return userName != null && adminUsersService.isAdmin(userName);
100    }
101
102    @Override
103    public ApplicationSession getSession() {
104        return (ApplicationSession) super.getSession();
105    }
106
107} // class BasePage
Note: See TracBrowser for help on using the repository browser.