Search code examples
javagwtgwtp

GWTP Gatekeeper


I do someexample from GWTP

http://blog.arcbees.com/2015/10/27/gwtp-beginners-tutorial-toaster-launcher-part-2/#Gatekeeper

@DefaultGatekeeper
public class LoggedInGatekeeper implements Gatekeeper {
    private CurrentUser currentUser;

    @Inject
    public LoggedInGatekeeper(CurrentUser currentUser) {
        this.currentUser = currentUser;
    }

    @Override
    public boolean canReveal() {
        return currentUser.isLoggedIn();
    }
}

Here we give access if user is login.

Is it possible to find out which page (NameToken) wants to go by? And whether to give him a right, depending on the permissions


Solution

  • Sure, just inject a PlaceManager into your LoggedInGatekeeper and call getCurrentPlaceRequest and then compare it your NameToken. Something along these lines:

    @DefaultGatekeeper
    public class LoggedInGatekeeper implements Gatekeeper {
        private CurrentUser currentUser;
        private PlaceManager placeManager;
    
        @Inject
        public LoggedInGatekeeper(CurrentUser currentUser, PlaceManager placeManager) {
            this.currentUser = currentUser;
            this.placeManager = placeManager;
        }
    
        @Override
        public boolean canReveal() {
            PlaceRequest request = placeManager.getCurrentPlaceRequest();
            if (request.hasSameNameToken('someNameToken') {
    
               return currentUser.isLoggedIn();
            }
            return true;
        }
    }