
package de.ivu.elect.jee.security;

/**
 * Interface eines Services, der die Authentifizierung und Authorisierung vornimmt
 */
public interface LoginService {

  LoginData login(Long mandantenNummer, String benutzername, String kennung) throws AuthentificationFailedException;

  void changePassword(Long mandantenNummer, String benutzerkennung, String passwortAlt, String passwortNeu);

  String getServiceName();

  /**
   * Sollen externe Gruppen in die lokale Datenbank übernommen werden?
   */
  boolean isGruppenUebernehmen(Long mandantenNummer);

  /**
   * Unterstützt der Service das Wechseln des Passwortes?
   */
  boolean isPasswortWechselnMoeglich(Long mandantenNummer);

  String getPasswortFormatPattern(Long mandantenNummer);

  String getPasswortFormatBeschreibung(Long mandantenNummer);

  /**
   * Unterstützt der Service das Anlegen von Nutzern?
   */
  boolean isBenutzerAnlegenMoeglich(Long mandantenNummer);

  /**
   * Können Nutzer gepserrt werden?
   */
  boolean isSperrenMoeglich(Long mandantenNummer);

  boolean isBenutzernameKannGewechseltWerden(Long mandantenNummer);

}
