Improve CMS security layer documentation.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / AnonymousLoginModule.java
index 7a1283afa9d7cc72ed93b50eafb07320ce7e4ff1..1d24be7ade914c45b4e862ca9fe310844c83cb3c 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.cms.auth;
 
+import java.util.Locale;
 import java.util.Map;
 
 import javax.security.auth.Subject;
@@ -10,7 +11,6 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.cms.CmsException;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.useradmin.Authorization;
@@ -36,7 +36,7 @@ public class AnonymousLoginModule implements LoginModule {
                        bc = FrameworkUtil.getBundle(AnonymousLoginModule.class).getBundleContext();
                        assert bc != null;
                } catch (Exception e) {
-                       throw new CmsException("Cannot initialize login module", e);
+                       throw new IllegalStateException("Cannot initialize login module", e);
                }
        }
 
@@ -49,16 +49,19 @@ public class AnonymousLoginModule implements LoginModule {
        public boolean commit() throws LoginException {
                UserAdmin userAdmin = bc.getService(bc.getServiceReference(UserAdmin.class));
                Authorization authorization = userAdmin.getAuthorization(null);
-               CmsAuthUtils.addAuthorization(subject, authorization,
-                               (HttpServletRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST));
-               if (log.isDebugEnabled())
-                       log.debug("Anonymous logged in to CMS: " + subject);
+               HttpServletRequest request = (HttpServletRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST);
+               Locale locale = Locale.getDefault();
+               if (request != null)
+                       locale = request.getLocale();
+               CmsAuthUtils.addAuthorization(subject, authorization);
+               CmsAuthUtils.registerSessionAuthorization(request, subject, authorization, locale);
+               if (log.isTraceEnabled())
+                       log.trace("Anonymous logged in to CMS: " + subject);
                return true;
        }
 
        @Override
        public boolean abort() throws LoginException {
-               // authorization = null;
                return true;
        }