]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.e4/src/org/argeo/cms/e4/parts/EgoDashboard.java
Improve single sourcing.
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / parts / EgoDashboard.java
1 package org.argeo.cms.e4.parts;
2
3 import static org.argeo.cms.ui.util.CmsUiUtils.lbl;
4 import static org.argeo.cms.ui.util.CmsUiUtils.txt;
5
6 import java.security.AccessController;
7 import java.time.ZonedDateTime;
8
9 import javax.annotation.PostConstruct;
10 import javax.security.auth.Subject;
11
12 import org.argeo.cms.auth.CmsSession;
13 import org.argeo.cms.auth.CurrentUser;
14 import org.eclipse.swt.layout.GridLayout;
15 import org.eclipse.swt.widgets.Composite;
16 import org.osgi.framework.BundleContext;
17 import org.osgi.framework.FrameworkUtil;
18
19 /** A canonical view of the logged in user. */
20 public class EgoDashboard {
21 private BundleContext bc = FrameworkUtil.getBundle(EgoDashboard.class).getBundleContext();
22
23 @PostConstruct
24 public void createPartControl(Composite p) {
25 p.setLayout(new GridLayout());
26 String username = CurrentUser.getUsername();
27
28 lbl(p, "<strong>" + CurrentUser.getDisplayName() + "</strong>");
29 txt(p, username);
30 lbl(p, "Roles:");
31 roles: for (String role : CurrentUser.roles()) {
32 if (username.equals(role))
33 continue roles;
34 txt(p, role);
35 }
36
37 Subject subject = Subject.getSubject(AccessController.getContext());
38 if (subject != null) {
39 CmsSession cmsSession = CmsSession.getCmsSession(bc, subject);
40 ZonedDateTime loggedIndSince = cmsSession.getCreationTime();
41 lbl(p, "Session:");
42 txt(p, cmsSession.getUuid().toString());
43 lbl(p, "Logged in since:");
44 txt(p, loggedIndSince.toString());
45 }
46 }
47 }