]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/auth/RemoteAuthCallbackHandler.java
FS utils throws IOException
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / RemoteAuthCallbackHandler.java
1 package org.argeo.cms.auth;
2
3 import java.io.IOException;
4
5 import javax.security.auth.callback.Callback;
6 import javax.security.auth.callback.CallbackHandler;
7 import javax.security.auth.callback.LanguageCallback;
8 import javax.security.auth.callback.UnsupportedCallbackException;
9
10 /**
11 * Callback handler populating {@link RemoteAuthCallback}s with the provided
12 * {@link HttpServletRequest}, and ignoring any other callback.
13 */
14 public class RemoteAuthCallbackHandler implements CallbackHandler {
15 final private RemoteAuthRequest request;
16 final private RemoteAuthResponse response;
17 final private RemoteAuthSession httpSession;
18
19 public RemoteAuthCallbackHandler(RemoteAuthRequest request, RemoteAuthResponse response) {
20 this.request = request;
21 this.httpSession = request.getSession();
22 this.response = response;
23 }
24
25 public RemoteAuthCallbackHandler(RemoteAuthSession httpSession) {
26 this.httpSession = httpSession;
27 this.request = null;
28 this.response = null;
29 }
30
31 @Override
32 public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
33 for (Callback callback : callbacks)
34 if (callback instanceof RemoteAuthCallback) {
35 ((RemoteAuthCallback) callback).setRequest(request);
36 ((RemoteAuthCallback) callback).setResponse(response);
37 ((RemoteAuthCallback) callback).setHttpSession(httpSession);
38 } else if (callback instanceof LanguageCallback) {
39 ((LanguageCallback) callback).setLocale(request.getLocale());
40 }
41 }
42
43 }