]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java
JCR as an ACR backend
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / CurrentUser.java
index 11dbaa3f79002b5b73c451d96be9fe204d75c2f0..86a748325ec0e0a553ab3e46d2be403a59fe5c73 100644 (file)
@@ -13,11 +13,12 @@ import java.util.UUID;
 import javax.security.auth.Subject;
 import javax.security.auth.x500.X500Principal;
 
-import org.argeo.api.NodeConstants;
-import org.argeo.cms.CmsException;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.CmsSession;
+import org.argeo.api.cms.CmsSessionId;
 import org.argeo.cms.internal.auth.CmsSessionImpl;
 import org.argeo.cms.internal.auth.ImpliedByPrincipal;
-import org.argeo.cms.internal.kernel.Activator;
+import org.argeo.cms.internal.runtime.CmsContextImpl;
 import org.osgi.service.useradmin.Authorization;
 
 /**
@@ -25,9 +26,6 @@ import org.osgi.service.useradmin.Authorization;
  * context.
  */
 public final class CurrentUser {
-       // private final static Log log = LogFactory.getLog(CurrentUser.class);
-       // private final static BundleContext bc =
-       // FrameworkUtil.getBundle(CurrentUser.class).getBundleContext();
        /*
         * CURRENT USER API
         */
@@ -86,9 +84,9 @@ public final class CurrentUser {
 
        public final static String getUsername(Subject subject) {
                if (subject == null)
-                       throw new CmsException("Subject cannot be null");
+                       throw new IllegalArgumentException("Subject cannot be null");
                if (subject.getPrincipals(X500Principal.class).size() != 1)
-                       return NodeConstants.ROLE_ANONYMOUS;
+                       return CmsConstants.ROLE_ANONYMOUS;
                Principal principal = subject.getPrincipals(X500Principal.class).iterator().next();
                return principal.getName();
        }
@@ -109,7 +107,7 @@ public final class CurrentUser {
        public final static Locale locale(Subject subject) {
                Set<Locale> locales = subject.getPublicCredentials(Locale.class);
                if (locales.isEmpty()) {
-                       Locale defaultLocale = Activator.getNodeState().getDefaultLocale();
+                       Locale defaultLocale = CmsContextImpl.getCmsContext().getDefaultLocale();
                        return defaultLocale;
                } else
                        return locales.iterator().next();
@@ -120,10 +118,10 @@ public final class CurrentUser {
                if (subject == null)
                        return true;
                String username = getUsername(subject);
-               return username == null || username.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS);
+               return username == null || username.equalsIgnoreCase(CmsConstants.ROLE_ANONYMOUS);
        }
 
-       public CmsSession getCmsSession() {
+       public static CmsSession getCmsSession() {
                Subject subject = currentSubject();
                CmsSessionId cmsSessionId = subject.getPrivateCredentials(CmsSessionId.class).iterator().next();
                return CmsSessionImpl.getByUuid(cmsSessionId.getUuid());
@@ -133,32 +131,16 @@ public final class CurrentUser {
         * HELPERS
         */
        private static Subject currentSubject() {
-               // CmsAuthenticated cmsView = getNodeAuthenticated();
-               // if (cmsView != null)
-               // return cmsView.getSubject();
                Subject subject = getAccessControllerSubject();
                if (subject != null)
                        return subject;
-               throw new CmsException("Cannot find related subject");
+               throw new IllegalStateException("Cannot find related subject");
        }
 
        private static Subject getAccessControllerSubject() {
                return Subject.getSubject(AccessController.getContext());
        }
 
-       // public static boolean isAuthenticated() {
-       // return getAccessControllerSubject() != null;
-       // }
-
-       /**
-        * The node authenticated component (typically a CMS view) related to this
-        * display, or null if none is available from this call. <b>Not API: Only for
-        * low-level access.</b>
-        */
-       // private static CmsAuthenticated getNodeAuthenticated() {
-       // return UiContext.getData(CmsAuthenticated.KEY);
-       // }
-
        private static Authorization getAuthorization(Subject subject) {
                return subject.getPrivateCredentials(Authorization.class).iterator().next();
        }
@@ -170,7 +152,11 @@ public final class CurrentUser {
                else
                        return false;
                CmsSessionImpl cmsSession = CmsSessionImpl.getByUuid(nodeSessionId.toString());
-               cmsSession.close();
+
+               // FIXME logout all views
+               // TODO check why it is sometimes null
+               if (cmsSession != null)
+                       cmsSession.close();
                // if (log.isDebugEnabled())
                // log.debug("Logged out CMS session " + cmsSession.getUuid());
                return true;