]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.e4/src/org/argeo/cms/e4/parts/EgoDashboard.java
Introduce CMS Ego app, providing canonical information on any logged-in
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / parts / EgoDashboard.java
diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/EgoDashboard.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/parts/EgoDashboard.java
new file mode 100644 (file)
index 0000000..8499356
--- /dev/null
@@ -0,0 +1,47 @@
+package org.argeo.cms.e4.parts;
+
+import static org.argeo.cms.ui.util.CmsUiUtils.lbl;
+import static org.argeo.cms.ui.util.CmsUiUtils.txt;
+
+import java.security.AccessController;
+import java.time.ZonedDateTime;
+
+import javax.annotation.PostConstruct;
+import javax.security.auth.Subject;
+
+import org.argeo.cms.auth.CmsSession;
+import org.argeo.cms.auth.CurrentUser;
+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();
+
+               lbl(p, "<strong>" + CurrentUser.getDisplayName() + "</strong>");
+               txt(p, username);
+               lbl(p, "Roles:");
+               roles: for (String role : CurrentUser.roles()) {
+                       if (username.equals(role))
+                               continue roles;
+                       txt(p, role);
+               }
+
+               Subject subject = Subject.getSubject(AccessController.getContext());
+               if (subject != null) {
+                       CmsSession cmsSession = CmsSession.getCmsSession(bc, subject);
+                       ZonedDateTime loggedIndSince = cmsSession.getCreationTime();
+                       lbl(p, "Session:");
+                       txt(p, cmsSession.getUuid().toString());
+                       lbl(p, "Logged in since:");
+                       txt(p, loggedIndSince.toString());
+               }
+       }
+}