use of io.jmix.core.security.ClientDetails in project jmix by jmix-framework.
the class LoginScreen method onSuccessfulAuthentication.
protected void onSuccessfulAuthentication(Authentication authentication) {
if (cubaProperties.isLocaleSelectVisible()) {
ClientDetails clientDetails = (ClientDetails) authentication.getDetails();
app.addCookie(App.COOKIE_LOCALE, clientDetails.getLocale().toLanguageTag());
}
}
use of io.jmix.core.security.ClientDetails in project jmix by jmix-framework.
the class AppLoginWindow method onSuccessfulAuthentication.
protected void onSuccessfulAuthentication(Authentication authentication) {
if (cubaProperties.isLocaleSelectVisible()) {
ClientDetails clientDetails = (ClientDetails) authentication.getDetails();
app.addCookie(App.COOKIE_LOCALE, clientDetails.getLocale().toLanguageTag());
}
}
use of io.jmix.core.security.ClientDetails in project jmix by jmix-framework.
the class UserSessionSourceImpl method updateUserSessionFromAuthentication.
protected void updateUserSessionFromAuthentication(Authentication authentication, UserSession session) {
UserRepository userRepository = beanFactory.getBean(UserRepository.class);
if (authentication instanceof UsernamePasswordAuthenticationToken || authentication instanceof RememberMeAuthenticationToken) {
session.setUser((UserDetails) authentication.getPrincipal());
if (authentication.getDetails() instanceof ClientDetails) {
ClientDetails clientDetails = (ClientDetails) authentication.getDetails();
session.setLocale(clientDetails.getLocale());
} else {
session.setLocale(Locale.getDefault());
}
} else if (authentication instanceof AnonymousAuthenticationToken || authentication instanceof SystemAuthenticationToken) {
Object principal = authentication.getPrincipal();
if (principal instanceof UserDetails) {
session.setUser((UserDetails) authentication.getPrincipal());
session.setLocale(Locale.getDefault());
} else {
session.setUser(userRepository.getSystemUser());
session.setLocale(Locale.getDefault());
}
} else if (authentication instanceof OAuth2Authentication) {
Authentication userAuthentication = ((OAuth2Authentication) authentication).getUserAuthentication();
if (userAuthentication != authentication) {
updateUserSessionFromAuthentication(userAuthentication, session);
}
} else if (authentication == null) {
// todo MG should null authentication be possible?
// todo MG what user to return?
session.setUser(userRepository.getSystemUser());
session.setLocale(Locale.getDefault());
} else {
throw new RuntimeException("Authentication type is not supported: " + authentication.getClass().getCanonicalName());
}
}
use of io.jmix.core.security.ClientDetails in project jmix by jmix-framework.
the class UserSessionControllerManager method setSessionLocale.
// @Autowired
// protected TokenStore tokenStore;
public void setSessionLocale(HttpServletRequest request) {
Locale locale = restLocaleUtils.extractLocaleFromRequestHeader(request);
if (locale != null) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication instanceof OAuth2Authentication) {
OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) authentication;
// OAuth2AccessToken accessToken = tokenStore.getAccessToken(oAuth2Authentication);
Authentication userAuthentication = oAuth2Authentication.getUserAuthentication();
if (userAuthentication.getDetails() instanceof ClientDetails && userAuthentication instanceof AbstractAuthenticationToken) {
ClientDetails clientDetails = (ClientDetails) userAuthentication.getDetails();
((AbstractAuthenticationToken) userAuthentication).setDetails(ClientDetails.builder().of(clientDetails).locale(locale).build());
return;
}
}
}
throw new RestAPIException("Could not change user session locale", null, HttpStatus.UNPROCESSABLE_ENTITY);
}
use of io.jmix.core.security.ClientDetails in project jmix by jmix-framework.
the class LoginScreenSupport method createAuthenticationToken.
protected Authentication createAuthenticationToken(String username, String password, @Nullable Locale locale, @Nullable TimeZone timeZone) {
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
VaadinServletRequest request = VaadinServletRequest.getCurrent();
ClientDetails clientDetails = ClientDetails.builder().locale(locale != null ? locale : getDefaultLocale()).scope(SecurityScope.UI).sessionId(request.getSession().getId()).timeZone(timeZone == null ? getDeviceTimeZone() : timeZone).build();
authenticationToken.setDetails(clientDetails);
return authenticationToken;
}
Aggregations