use of com.haulmont.cuba.portal.Connection in project cuba by cuba-platform.
the class PortalLogoutHandler method onLogoutSuccess.
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
Connection connection = (Connection) request.getSession().getAttribute(Connection.NAME);
try {
if (connection != null) {
SecurityContext portalSecurityContext = new PortalSecurityContext(connection.getSession());
AppContext.setSecurityContext(portalSecurityContext);
PortalSession session = connection.getSession();
if (session != null && session.isAuthenticated())
connection.logout();
}
} catch (Exception e) {
log.warn("Exception while logout", e);
} finally {
AppContext.setSecurityContext(null);
}
request.getSession().invalidate();
super.onLogoutSuccess(request, response, authentication);
}
use of com.haulmont.cuba.portal.Connection in project cuba by cuba-platform.
the class SecurityContextHandlerInterceptor method preHandle.
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// filter resource requests
if (ClassUtils.isAssignableValue(ResourceHttpRequestHandler.class, handler)) {
return true;
}
PortalSecurityContext portalSecurityContext;
HttpSession httpSession = request.getSession();
Connection connection = (Connection) httpSession.getAttribute(Connection.NAME);
if (connection == null || connection.getSession() == null || !connection.isConnected()) {
connection = AppBeans.get(Connection.NAME);
connection.login(request.getLocale(), request.getRemoteAddr(), request.getHeader("User-Agent"));
httpSession.setAttribute(Connection.NAME, connection);
portalSecurityContext = new PortalSecurityContext(connection.getSession());
AppContext.setSecurityContext(portalSecurityContext);
} else {
PortalSession session = connection.getSession();
portalSecurityContext = new PortalSecurityContext(session);
AppContext.setSecurityContext(portalSecurityContext);
// ping only authenticated sessions
if (session != null && session.isAuthenticated()) {
UserSessionService userSessionSource = AppBeans.get(UserSessionService.NAME);
try {
userSessionSource.getMessages();
} catch (NoUserSessionException e) {
httpSession.invalidate();
response.sendRedirect(request.getRequestURI());
return false;
}
}
}
App app = new App(connection, request, response);
portalSecurityContext.setPortalApp(app);
return true;
}
use of com.haulmont.cuba.portal.Connection in project cuba by cuba-platform.
the class PortalAuthenticationProvider method authenticate.
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
if (authentication instanceof UsernamePasswordAuthenticationToken) {
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication;
PortalSession session;
String login = null;
String ipAddress = null;
try {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = attributes.getRequest();
login = (String) token.getPrincipal();
ipAddress = request.getRemoteAddr();
HttpSession httpSession = request.getSession();
Connection connection = (Connection) httpSession.getAttribute(Connection.NAME);
if (connection == null || connection.getSession() == null || !connection.isConnected()) {
connection = AppBeans.get(Connection.NAME);
}
PasswordEncryption passwordEncryption = AppBeans.get(PasswordEncryption.NAME);
connection.login(login, passwordEncryption.getPlainHash((String) token.getCredentials()), request.getLocale(), ipAddress, request.getHeader("User-Agent"));
httpSession.setAttribute(Connection.NAME, connection);
session = connection.getSession();
} catch (AccountLockedException e) {
log.info("Blocked user login attempt: login={}, ip={}", login, ipAddress);
throw new LockedException(e.getMessage());
} catch (UserIpRestrictedException e) {
log.info("Incorrect user IP: {} {} - {}", login, ipAddress);
throw new BadCredentialsException(e.getMessage());
} catch (LoginException e) {
log.info("Authentication failed: {} {} - {}", login, ipAddress, e.getMessage());
throw new BadCredentialsException(e.getMessage());
}
return new UsernamePasswordAuthenticationToken(session, session.getId(), getRoleUserAuthorities(session));
}
return null;
}
Aggregations