GWTP Gatekeeper

297 Views Asked by At

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

1

There are 1 best solutions below

0
Ümit On BEST ANSWER

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;
    }
}