Search in sources :

Example 1 with PortalSession

use of com.haulmont.cuba.portal.security.PortalSession 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);
}
Also used : PortalSession(com.haulmont.cuba.portal.security.PortalSession) Connection(com.haulmont.cuba.portal.Connection) SecurityContext(com.haulmont.cuba.core.sys.SecurityContext) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 2 with PortalSession

use of com.haulmont.cuba.portal.security.PortalSession 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;
}
Also used : App(com.haulmont.cuba.portal.App) HttpSession(javax.servlet.http.HttpSession) PortalSession(com.haulmont.cuba.portal.security.PortalSession) UserSessionService(com.haulmont.cuba.security.app.UserSessionService) Connection(com.haulmont.cuba.portal.Connection) NoUserSessionException(com.haulmont.cuba.security.global.NoUserSessionException)

Aggregations

Connection (com.haulmont.cuba.portal.Connection)2 PortalSession (com.haulmont.cuba.portal.security.PortalSession)2 SecurityContext (com.haulmont.cuba.core.sys.SecurityContext)1 App (com.haulmont.cuba.portal.App)1 UserSessionService (com.haulmont.cuba.security.app.UserSessionService)1 NoUserSessionException (com.haulmont.cuba.security.global.NoUserSessionException)1 IOException (java.io.IOException)1 ServletException (javax.servlet.ServletException)1 HttpSession (javax.servlet.http.HttpSession)1