package de.ivu.elect.jee.security;

import de.ivu.elect.jee.faces.Escape;
import de.ivu.elect.jee.faces.Messages;

import javax.enterprise.event.Event;
import java.io.Serializable;

public interface PrincipalContext<UseCasePerm extends Permission, PK extends Object> extends Serializable {

  LoginServiceFactory getLoginServiceFactory();

  LoginIpBestimmer getLoginIpBestimmer();

  Event<LoginChangeEvent> getLoginChangeEvent();

  Event<LogoutChangeEvent> getLogoutChangeEvent();

  Messages getMessages();

  UseCasePermissionFilter<UseCasePerm, PK> getUseCasePermissionFilter();

  PrincipalLoginFilter getPrincipalLoginFilter();

  Escape getEscape();

}
