1 | package eu.clarin.cmdi.virtualcollectionregistry.gui.pages; |
---|
2 | |
---|
3 | import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession; |
---|
4 | import org.apache.wicket.authentication.AuthenticatedWebSession; |
---|
5 | import org.apache.wicket.markup.html.basic.Label; |
---|
6 | import org.apache.wicket.markup.html.link.Link; |
---|
7 | import org.apache.wicket.markup.html.panel.Fragment; |
---|
8 | import org.apache.wicket.markup.html.panel.Panel; |
---|
9 | import org.apache.wicket.model.Model; |
---|
10 | |
---|
11 | @SuppressWarnings("serial") |
---|
12 | public class AuthenticationStatePanel extends Panel { |
---|
13 | |
---|
14 | public AuthenticationStatePanel(String id) { |
---|
15 | super(id); |
---|
16 | setRenderBodyOnly(true); |
---|
17 | add(new LoginFragment("login")); |
---|
18 | add(new LogoutFragment("logout")); |
---|
19 | } |
---|
20 | |
---|
21 | private class LoginFragment extends Fragment { |
---|
22 | |
---|
23 | public LoginFragment(String id) { |
---|
24 | super(id, "loginFragment", AuthenticationStatePanel.this); |
---|
25 | setRenderBodyOnly(true); |
---|
26 | add(new Link("loginLink") { |
---|
27 | |
---|
28 | @Override |
---|
29 | public void onClick() { |
---|
30 | setResponsePage(new DummyLoginPage(getPage().getPageReference())); |
---|
31 | } |
---|
32 | }); |
---|
33 | } |
---|
34 | |
---|
35 | @Override |
---|
36 | public boolean isVisible() { |
---|
37 | return !((AuthenticatedWebSession) getSession()).isSignedIn(); |
---|
38 | } |
---|
39 | |
---|
40 | @Override |
---|
41 | protected boolean getStatelessHint() { |
---|
42 | return true; |
---|
43 | } |
---|
44 | } // private class LoginFragment |
---|
45 | |
---|
46 | private class LogoutFragment extends Fragment { |
---|
47 | |
---|
48 | private final Label usernameLabel; |
---|
49 | |
---|
50 | public LogoutFragment(String id) { |
---|
51 | super(id, "logoutFragment", AuthenticationStatePanel.this); |
---|
52 | setRenderBodyOnly(true); |
---|
53 | usernameLabel = new Label("username"); |
---|
54 | usernameLabel.setRenderBodyOnly(true); |
---|
55 | add(usernameLabel); |
---|
56 | // final StatelessLink logoutLink = new StatelessLink("logoutLink") { |
---|
57 | // @Override |
---|
58 | // public void onClick() { |
---|
59 | // } |
---|
60 | // }; |
---|
61 | // add(logoutLink); |
---|
62 | } |
---|
63 | |
---|
64 | @Override |
---|
65 | public boolean isVisible() { |
---|
66 | return ((AuthenticatedWebSession) getSession()).isSignedIn(); |
---|
67 | } |
---|
68 | |
---|
69 | @Override |
---|
70 | protected void onBeforeRender() { |
---|
71 | ApplicationSession session = (ApplicationSession) getSession(); |
---|
72 | final Model<String> userModel |
---|
73 | = new Model<String>(session.getUserDisplay()); |
---|
74 | usernameLabel.setDefaultModel(userModel); |
---|
75 | super.onBeforeRender(); |
---|
76 | } |
---|
77 | } // private class LogoutFragment |
---|
78 | |
---|
79 | @Override |
---|
80 | protected boolean getStatelessHint() { |
---|
81 | return true; |
---|
82 | } |
---|
83 | |
---|
84 | } // class AuthenticationStatePanel |
---|