write cookie

fix npe
This commit is contained in:
Michael Gerber
2015-02-24 16:12:10 +01:00
parent 1af62d59ce
commit 33398b37a5
3 changed files with 18 additions and 5 deletions

View File

@@ -12,8 +12,9 @@ import java.util.*;
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
*/
public class LocaleHelper {
private final static String LOCALE_COOKIE = "KEYCLOAK_LOCALE";
private static final String LOCALE_PARAM = "ui_locale";
public final static String LOCALE_COOKIE = "KEYCLOAK_LOCALE";
public static final String LOCALE_PARAM = "ui_locale";
private final static Logger LOGGER = Logger.getLogger(LocaleHelper.class);
public static Locale getLocale(RealmModel realm, UserModel user, UriInfo uriInfo, HttpHeaders httpHeaders) {
@@ -26,7 +27,9 @@ public class LocaleHelper {
String localeString = httpHeaders.getCookies().get(LOCALE_COOKIE).getValue();
Locale locale = findLocale(localeString, realm.getSupportedLocales());
if(locale != null){
user.setAttribute(UserModel.LOCALE, locale.toLanguageTag());
if(user != null){
user.setAttribute(UserModel.LOCALE, locale.toLanguageTag());
}
return locale;
}else{
LOGGER.infof("Locale %s is not supported.", localeString);

View File

@@ -406,7 +406,7 @@ module.controller('RealmThemeCtrl', function($scope, Current, Realm, realm, serv
$scope.supportedLocalesOptions = {
'multiple' : true,
'simple_tags' : true,
'tags' : ['en', 'de', 'de_CH']
'tags' : ['en', 'de']
};
$scope.$watch('realm.supportedLocales', function(oldVal, newVal) {

View File

@@ -169,8 +169,9 @@ import java.util.concurrent.TimeUnit;
}
Properties messages;
Locale locale = LocaleHelper.getLocale(realm, user, uriInfo, httpHeaders);
try {
messages = theme.getMessages(LocaleHelper.getLocale(realm, user, uriInfo, httpHeaders));
messages = theme.getMessages(locale);
attributes.put("rb", messages);
} catch (IOException e) {
logger.warn("Failed to load messages", e);
@@ -227,6 +228,7 @@ import java.util.concurrent.TimeUnit;
for (Map.Entry<String, String> entry : httpResponseHeaders.entrySet()) {
builder.header(entry.getKey(), entry.getValue());
}
updateLocaleCookie(builder, locale);
return builder.build();
} catch (FreeMarkerException e) {
logger.error("Failed to process template", e);
@@ -234,6 +236,14 @@ import java.util.concurrent.TimeUnit;
}
}
private void updateLocaleCookie(Response.ResponseBuilder builder, Locale locale) {
if (locale == null) {
return;
}
boolean secure = realm.getSslRequired().isRequired(uriInfo.getRequestUri().getHost());
builder.cookie(new NewCookie(LocaleHelper.LOCALE_COOKIE, locale.toLanguageTag(), null, null, null, 31536000, secure));
}
public Response createLogin() {
return createResponse(LoginFormsPages.LOGIN);
}