Search in sources :

Example 1 with Login

use of org.apache.syncope.client.console.pages.Login in project syncope by apache.

the class SyncopeConsoleRequestCycleListener method onException.

@Override
public IRequestHandler onException(final RequestCycle cycle, final Exception e) {
    LOG.error("Exception found", e);
    PageParameters errorParameters = new PageParameters();
    IRequestablePage errorPage = null;
    if (instanceOf(e, UnauthorizedInstantiationException.class) != null) {
        errorParameters.add("errorMessage", MISSING_AUTHORIZATION);
        errorPage = new Login(errorParameters);
    } else if (instanceOf(e, AccessControlException.class) != null) {
        if (instanceOf(e, AccessControlException.class).getMessage().contains("expired")) {
            errorParameters.add("errorMessage", PAGE_EXPIRED);
        } else {
            errorParameters.add("errorMessage", MISSING_AUTHORIZATION_CORE);
        }
        errorPage = new Login(errorParameters);
    } else if (instanceOf(e, PageExpiredException.class) != null || !SyncopeConsoleSession.get().isSignedIn()) {
        errorParameters.add("errorMessage", PAGE_EXPIRED);
        errorPage = new Login(errorParameters);
    } else if (instanceOf(e, BadRequestException.class) != null || instanceOf(e, WebServiceException.class) != null || instanceOf(e, SyncopeClientException.class) != null) {
        errorParameters.add("errorMessage", REST);
        errorPage = new Login(errorParameters);
    } else {
        Throwable cause = instanceOf(e, ForbiddenException.class);
        if (cause == null) {
            // redirect to default Wicket error page
            errorPage = new ExceptionErrorPage(e, null);
        } else {
            errorParameters.add("errorMessage", cause.getMessage());
            errorPage = new Login(errorParameters);
        }
    }
    if (errorPage instanceof Login) {
        try {
            SyncopeConsoleSession.get().cleanup();
            SyncopeConsoleSession.get().invalidateNow();
        } catch (Throwable t) {
            // ignore
            LOG.debug("Unexpected error while forcing logout after error", t);
        }
    }
    return new RenderPageRequestHandler(new PageProvider(errorPage));
}
Also used : ForbiddenException(javax.ws.rs.ForbiddenException) ExceptionErrorPage(org.apache.wicket.markup.html.pages.ExceptionErrorPage) RenderPageRequestHandler(org.apache.wicket.core.request.handler.RenderPageRequestHandler) PageProvider(org.apache.wicket.core.request.handler.PageProvider) IRequestablePage(org.apache.wicket.request.component.IRequestablePage) SyncopeClientException(org.apache.syncope.common.lib.SyncopeClientException) AccessControlException(java.security.AccessControlException) PageParameters(org.apache.wicket.request.mapper.parameter.PageParameters) Login(org.apache.syncope.client.console.pages.Login) UnauthorizedInstantiationException(org.apache.wicket.authorization.UnauthorizedInstantiationException)

Aggregations

AccessControlException (java.security.AccessControlException)1 ForbiddenException (javax.ws.rs.ForbiddenException)1 Login (org.apache.syncope.client.console.pages.Login)1 SyncopeClientException (org.apache.syncope.common.lib.SyncopeClientException)1 UnauthorizedInstantiationException (org.apache.wicket.authorization.UnauthorizedInstantiationException)1 PageProvider (org.apache.wicket.core.request.handler.PageProvider)1 RenderPageRequestHandler (org.apache.wicket.core.request.handler.RenderPageRequestHandler)1 ExceptionErrorPage (org.apache.wicket.markup.html.pages.ExceptionErrorPage)1 IRequestablePage (org.apache.wicket.request.component.IRequestablePage)1 PageParameters (org.apache.wicket.request.mapper.parameter.PageParameters)1