Package org.jboss.errai.security.client.local

Source Code of org.jboss.errai.security.client.local.PageRequestObserver

package org.jboss.errai.security.client.local;

import org.jboss.errai.common.client.PageRequest;
import org.jboss.errai.common.client.api.Caller;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.security.shared.AuthenticationService;
import org.jboss.errai.ui.nav.client.local.Navigation;
import org.jboss.errai.ui.nav.client.local.api.SecurityError;
import org.jboss.errai.ui.nav.client.shared.NavigationEvent;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;

/**
* @author edewit@redhat.com
*/
@ApplicationScoped
public class PageRequestObserver {

  @Inject
  Navigation navigation;

  @Inject
  private Caller<AuthenticationService> authenticationService;

  public void observer(@Observes NavigationEvent event) {
    final PageRequest pageRequest = event.getPageRequest();
    try {
      authenticationService.call(new RemoteCallback<Boolean>() {
        @Override
        public void callback(Boolean response) {
          if (!response) {
            navigation.goToWithRole(SecurityError.class);
          }
        }
      }).hasPermission(pageRequest);
    } catch (Exception e) {
      //we get a navigation even on the first page when the system is not ready.
    }
  }
}
TOP

Related Classes of org.jboss.errai.security.client.local.PageRequestObserver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.