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