package org.argeo.cms.e4.parts; import java.security.AccessController; import java.time.ZonedDateTime; import javax.annotation.PostConstruct; import javax.security.auth.Subject; import org.argeo.api.cms.CmsSession; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.osgi.CmsOsgiUtils; import org.argeo.cms.swt.CmsSwtUtils; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; /** A canonical view of the logged in user. */ public class EgoDashboard { private BundleContext bc = FrameworkUtil.getBundle(EgoDashboard.class).getBundleContext(); @PostConstruct public void createPartControl(Composite p) { p.setLayout(new GridLayout()); String username = CurrentUser.getUsername(); CmsSwtUtils.lbl(p, "" + CurrentUser.getDisplayName() + ""); CmsSwtUtils.txt(p, username); CmsSwtUtils.lbl(p, "Roles:"); roles: for (String role : CurrentUser.roles()) { if (username.equals(role)) continue roles; CmsSwtUtils.txt(p, role); } Subject subject = Subject.getSubject(AccessController.getContext()); if (subject != null) { CmsSession cmsSession = CmsOsgiUtils.getCmsSession(bc, subject); ZonedDateTime loggedIndSince = cmsSession.getCreationTime(); CmsSwtUtils.lbl(p, "Session:"); CmsSwtUtils.txt(p, cmsSession.getUuid().toString()); CmsSwtUtils.lbl(p, "Logged in since:"); CmsSwtUtils.txt(p, loggedIndSince.toString()); } } }