- Authorization authorization = (Authorization) sharedState
- .get(AuthConstants.AUTHORIZATION_KEY);
- if (authorization == null)
- if (!isAnonymous) {
- // ask for username and password
- NameCallback nameCallback = new NameCallback("User");
- PasswordCallback passwordCallback = new PasswordCallback(
- "Password", false);
-
- // handle callbacks
- try {
- callbackHandler.handle(new Callback[] { nameCallback,
- passwordCallback });
- } catch (Exception e) {
- throw new ArgeoException("Cannot handle callbacks", e);
- }
+ Authorization authorization = null;
+ if (isAnonymous) {
+ authorization = userAdmin.getAuthorization(null);
+ } else {
+ HttpRequestCallback httpCallback = new HttpRequestCallback();
+ // ask for username and password
+ NameCallback nameCallback = new NameCallback("User");
+ PasswordCallback passwordCallback = new PasswordCallback(
+ "Password", false);
+ LanguageCallback langCallback = new LanguageCallback();
+ try {
+ callbackHandler.handle(new Callback[] { httpCallback,
+ nameCallback, passwordCallback, langCallback });
+ } catch (IOException e) {
+ throw new LoginException("Cannot handle http callback: "
+ + e.getMessage());
+ } catch (ThreadDeath e) {
+ throw new ThreadDeathLoginException(
+ "Callbackhandler thread died", e);
+ } catch (UnsupportedCallbackException e) {
+ return false;
+ }
+ request = httpCallback.getRequest();
+ if (request != null) {
+ authorization = (Authorization) request
+ .getAttribute(HttpContext.AUTHORIZATION);
+ if (authorization == null)
+ authorization = (Authorization) request.getSession()
+ .getAttribute(HttpContext.AUTHORIZATION);
+ }
+
+ // i18n
+ Locale locale = langCallback.getLocale();
+ if (locale == null)
+ locale = Locale.getDefault();
+ UiContext.setLocale(locale);