View Javadoc
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  }