]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/auth/AnonymousLoginModule.java
Prepare next development cycle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / AnonymousLoginModule.java
1 package org.argeo.cms.auth;
2
3 import java.util.Locale;
4 import java.util.Map;
5
6 import javax.security.auth.Subject;
7 import javax.security.auth.callback.CallbackHandler;
8 import javax.security.auth.login.LoginException;
9 import javax.security.auth.spi.LoginModule;
10
11 import org.argeo.api.cms.CmsLog;
12 import org.argeo.cms.internal.runtime.CmsContextImpl;
13 import org.osgi.service.useradmin.Authorization;
14 import org.osgi.service.useradmin.UserAdmin;
15
16 /** Anonymous CMS user */
17 public class AnonymousLoginModule implements LoginModule {
18 private final static CmsLog log = CmsLog.getLog(AnonymousLoginModule.class);
19
20 private Subject subject;
21 private Map<String, Object> sharedState = null;
22
23 // private state
24 // private BundleContext bc;
25
26 @SuppressWarnings("unchecked")
27 @Override
28 public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState,
29 Map<String, ?> options) {
30 this.subject = subject;
31 this.sharedState = (Map<String, Object>) sharedState;
32 // try {
33 // bc = FrameworkUtil.getBundle(AnonymousLoginModule.class).getBundleContext();
34 // assert bc != null;
35 // } catch (Exception e) {
36 // throw new IllegalStateException("Cannot initialize login module", e);
37 // }
38 }
39
40 @Override
41 public boolean login() throws LoginException {
42 return true;
43 }
44
45 @Override
46 public boolean commit() throws LoginException {
47 UserAdmin userAdmin = CmsContextImpl.getCmsContext().getUserAdmin();
48 Authorization authorization = userAdmin.getAuthorization(null);
49 RemoteAuthRequest request = (RemoteAuthRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST);
50 Locale locale = Locale.getDefault();
51 if (request != null)
52 locale = request.getLocale();
53 CmsAuthUtils.addAuthorization(subject, authorization);
54 CmsAuthUtils.registerSessionAuthorization(request, subject, authorization, locale);
55 if (log.isTraceEnabled())
56 log.trace("Anonymous logged in to CMS: " + subject);
57 return true;
58 }
59
60 @Override
61 public boolean abort() throws LoginException {
62 return true;
63 }
64
65 @Override
66 public boolean logout() throws LoginException {
67 if (log.isTraceEnabled())
68 log.trace("Logging out anonymous from CMS... " + subject);
69 CmsAuthUtils.cleanUp(subject);
70 return true;
71 }
72 }