1 | package eu.clarin.cmdi.virtualcollectionregistry.gui; |
---|
2 | |
---|
3 | import eu.clarin.cmdi.virtualcollectionregistry.AdminUsersService; |
---|
4 | import eu.clarin.cmdi.virtualcollectionregistry.DataStore; |
---|
5 | import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry; |
---|
6 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.AdminPage; |
---|
7 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.BrowsePrivateCollectionsPage; |
---|
8 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.BrowsePublicCollectionsPage; |
---|
9 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.CreateVirtualCollectionPage; |
---|
10 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.EditVirtualCollectionPage; |
---|
11 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.LoginPage; |
---|
12 | import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.VirtualCollectionDetailsPage; |
---|
13 | import org.apache.wicket.Page; |
---|
14 | import org.apache.wicket.authentication.AuthenticatedWebApplication; |
---|
15 | import org.apache.wicket.authentication.AuthenticatedWebSession; |
---|
16 | import org.apache.wicket.authorization.strategies.role.Roles; |
---|
17 | import org.apache.wicket.markup.html.WebPage; |
---|
18 | import org.apache.wicket.protocol.http.WebApplication; |
---|
19 | import org.apache.wicket.request.target.coding.MixedParamHybridUrlCodingStrategy; |
---|
20 | import org.apache.wicket.session.pagemap.LeastRecentlyAccessedEvictionStrategy; |
---|
21 | import org.apache.wicket.spring.injection.annot.SpringComponentInjector; |
---|
22 | import org.slf4j.Logger; |
---|
23 | import org.slf4j.LoggerFactory; |
---|
24 | import org.springframework.beans.factory.annotation.Autowired; |
---|
25 | import org.springframework.stereotype.Component; |
---|
26 | |
---|
27 | @Component |
---|
28 | public class Application extends AuthenticatedWebApplication { |
---|
29 | |
---|
30 | private final static Logger logger = LoggerFactory.getLogger(Application.class); |
---|
31 | |
---|
32 | @Autowired |
---|
33 | private VirtualCollectionRegistry registry; |
---|
34 | @Autowired |
---|
35 | private DataStore dataStore; |
---|
36 | @Autowired |
---|
37 | private AdminUsersService adminUsersService; |
---|
38 | |
---|
39 | @Override |
---|
40 | protected void init() { |
---|
41 | super.init(); |
---|
42 | logger.info("Initialising VCR web application"); |
---|
43 | addComponentInstantiationListener(new SpringComponentInjector(this)); |
---|
44 | |
---|
45 | getMarkupSettings().setDefaultMarkupEncoding("utf-8"); |
---|
46 | getRequestCycleSettings().setResponseRequestEncoding("utf-8"); |
---|
47 | getSessionSettings().setMaxPageMaps(3); |
---|
48 | getSessionSettings().setPageMapEvictionStrategy( |
---|
49 | new LeastRecentlyAccessedEvictionStrategy(3)); |
---|
50 | if (!DEPLOYMENT.equals(getConfigurationType())) { |
---|
51 | logger.warn("Web application configured for development"); |
---|
52 | getMarkupSettings().setStripWicketTags(true); |
---|
53 | getMarkupSettings().setStripComments(true); |
---|
54 | } |
---|
55 | |
---|
56 | mountBookmarkablePage("/login", |
---|
57 | LoginPage.class); |
---|
58 | mountBookmarkablePage("/public", |
---|
59 | BrowsePublicCollectionsPage.class); |
---|
60 | mountBookmarkablePage("/private", |
---|
61 | BrowsePrivateCollectionsPage.class); |
---|
62 | mountBookmarkablePage("/create", CreateVirtualCollectionPage.class); |
---|
63 | mountBookmarkablePage("/admin", AdminPage.class); |
---|
64 | |
---|
65 | // details of an existing collection by ID, e.g. /details/123 |
---|
66 | mount(new MixedParamHybridUrlCodingStrategy("/details", |
---|
67 | VirtualCollectionDetailsPage.class, new String[]{VirtualCollectionDetailsPage.PARAM_VC_ID})); |
---|
68 | // editing an existing collection by ID, e.g. /edit/123 |
---|
69 | mount(new MixedParamHybridUrlCodingStrategy("/edit", |
---|
70 | EditVirtualCollectionPage.class, new String[]{"id"})); |
---|
71 | } |
---|
72 | |
---|
73 | @Override |
---|
74 | public Class<? extends Page> getHomePage() { |
---|
75 | return BrowsePublicCollectionsPage.class; |
---|
76 | } |
---|
77 | |
---|
78 | @Override |
---|
79 | protected Class<? extends WebPage> getSignInPageClass() { |
---|
80 | return LoginPage.class; |
---|
81 | } |
---|
82 | |
---|
83 | @Override |
---|
84 | protected Class<? extends AuthenticatedWebSession> getWebSessionClass() { |
---|
85 | return ApplicationSession.class; |
---|
86 | } |
---|
87 | |
---|
88 | public boolean hasAnyRole(String[] roles) { |
---|
89 | if (roles != null) { |
---|
90 | final Roles sessionRoles = AuthenticatedWebSession.get().getRoles(); |
---|
91 | if (sessionRoles != null) { |
---|
92 | for (String role : roles) { |
---|
93 | if (sessionRoles.hasRole(role)) { |
---|
94 | return true; |
---|
95 | } |
---|
96 | } |
---|
97 | } |
---|
98 | } |
---|
99 | return false; |
---|
100 | } |
---|
101 | |
---|
102 | boolean isAdmin(String user) { |
---|
103 | return adminUsersService.isAdmin(user); |
---|
104 | } |
---|
105 | |
---|
106 | public VirtualCollectionRegistry getRegistry() { |
---|
107 | return registry; |
---|
108 | } |
---|
109 | |
---|
110 | public DataStore getDataStore() { |
---|
111 | return dataStore; |
---|
112 | } |
---|
113 | |
---|
114 | public static Application get() { |
---|
115 | return (Application) WebApplication.get(); |
---|
116 | } |
---|
117 | |
---|
118 | } // class Application |
---|