mirror of
https://github.com/keycloak/keycloak.git
synced 2026-02-09 16:58:58 -06:00
write cookie
fix npe
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user