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

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

Title link to actual app home page
Refs #594

  • 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    }
47   
48    protected BasePage() {
49        this(null);
50    }
51   
52    @Override
53    protected void onBeforeRender() {
54        // skip lazy auto-auth for login page
55        if (!this.getClass().isInstance(LoginPage.class)) {
56            final HttpServletRequest request
57                    = getWebRequestCycle().getWebRequest().getHttpServletRequest();
58            final ApplicationSession session
59                    = (ApplicationSession) getSession();
60            if (!session.isSignedIn()) {
61                if (request.getAuthType() != null) {
62                    // FIXME: better logging
63                    System.err.println("Auth, but no authed session -> login");
64                    final Principal principal = request.getUserPrincipal();
65                    if (!session.signIn(principal)) {
66                        throw new RestartResponseException(getApplication()
67                                .getApplicationSettings()
68                                .getAccessDeniedPage());
69                    }
70                }
71            } else {
72                if (request.getAuthType() == null) {
73                    // FIXME: better logging
74                    System.err.println("Lost Session!");
75                    session.invalidate();
76                    throw new RestartResponseException(getApplication()
77                            .getApplicationSettings()
78                            .getPageExpiredErrorPage());
79                }
80            }
81        }
82        super.onBeforeRender();
83    }
84   
85    protected Principal getUser() {
86        ApplicationSession session = (ApplicationSession) getSession();
87        Principal principal = session.getPrincipal();
88        if (principal == null) {
89            throw new WicketRuntimeException("principal == null");
90        }
91        return principal;
92    }
93   
94    protected boolean isUserAdmin() {
95        final String userName = getUser().getName();
96        return userName != null && adminUsersService.isAdmin(userName);
97    }
98   
99    @Override
100    public ApplicationSession getSession() {
101        return (ApplicationSession) super.getSession();
102    }
103   
104} // class BasePage
Note: See TracBrowser for help on using the repository browser.