All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imunity.vaadin.auth.NavigationAccessControlInitializer Maven / Gradle / Ivy

/*
 * Copyright (c) 2021 Bixbit - Krzysztof Benedyczak. All rights reserved.
 * See LICENCE.txt file for licensing information.
 */

package io.imunity.vaadin.auth;

import com.vaadin.flow.server.ServiceInitEvent;
import com.vaadin.flow.server.VaadinServiceInitListener;
import com.vaadin.flow.server.auth.NavigationAccessControl;

import io.imunity.vaadin.endpoint.common.SessionStorage;

import static io.imunity.vaadin.endpoint.common.SessionStorage.REDIRECT_URL_SESSION_STORAGE_KEY;

import org.jsoup.nodes.Document;

public class NavigationAccessControlInitializer implements VaadinServiceInitListener
{
	private final NavigationAccessControl navigationAccessControl;
	private final String afterSuccessLoginRedirect;

	static NavigationAccessControlInitializer defaultInitializer()
	{
		return new NavigationAccessControlInitializer("window.location.href");
	}

	static NavigationAccessControlInitializer withAfterSuccessLoginRedirect(String afterSuccessLoginRedirect)
	{
		return new NavigationAccessControlInitializer("\"" + afterSuccessLoginRedirect + "\"");
	}

	private NavigationAccessControlInitializer(String afterSuccessLoginRedirect)
	{
		navigationAccessControl = new NavigationAccessControl();
		navigationAccessControl.setLoginView(AuthenticationView.class);
		this.afterSuccessLoginRedirect = afterSuccessLoginRedirect;
	}

	@Override
	public void serviceInit(ServiceInitEvent serviceInitEvent) {
		serviceInitEvent.getSource().addUIInitListener(uiInitEvent -> uiInitEvent.getUI().addBeforeEnterListener(navigationAccessControl));
		saveOriginalUrlRequestInSessionStorageBeforeAllRedirects(serviceInitEvent);
	}

	private void saveOriginalUrlRequestInSessionStorageBeforeAllRedirects(ServiceInitEvent serviceInitEvent)
	{
		serviceInitEvent.addIndexHtmlRequestListener(response -> 
		{
			Document document = response.getDocument();
			document.body().append("");
		});
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy