
package de.ivu.elect.business.security.control;

import javax.inject.Inject;

import de.ivu.elect.business.security.entity.LoginServiceName;
import de.ivu.elect.jee.security.AuthentificationFailedException;
import de.ivu.elect.jee.security.DefaultLoginService;
import de.ivu.elect.jee.security.LoginData;
import de.ivu.elect.jee.security.LoginService;

public class DatabaseLoginService implements LoginService, DefaultLoginService {


  @Inject
  private transient DatabaseLoginServiceEJB databaseLoginServiceEJB;

  @Inject
  private transient LoginServiceKonfiguration loginServiceKonfiguration;

  @Override
  public LoginData login(Long mandantenNummer, String benutzername, String kennungImKlartext) throws AuthentificationFailedException {
    return databaseLoginServiceEJB.login(mandantenNummer, benutzername, kennungImKlartext);
  }

  @Override
  public void changePassword(Long mandantenNummer, String benutzerkennung, String passwortAlt, String passwortNeu) {
    databaseLoginServiceEJB.changePassword(mandantenNummer, benutzerkennung, passwortAlt, passwortNeu);
  }

  @Override
  public String getServiceName() {
    return LoginServiceName.Database.name();
  }

  @Override
  public boolean isGruppenUebernehmen(Long mandantenNummer) {
    // Gruppen sind bereits in der Datenbank
    return false;
  }

  @Override
  public boolean isPasswortWechselnMoeglich(Long mandantenNummer) {
    return true;
  }

  @Override
  public String getPasswortFormatPattern(Long mandantenNummer) {
    return loginServiceKonfiguration.getLoginServicePasswortFormatPattern(mandantenNummer);
  }

  @Override
  public String getPasswortFormatBeschreibung(Long mandantenNummer) {
    return loginServiceKonfiguration.getLoginServicePasswortFormatBeschreibung(mandantenNummer);
  }

  @Override
  public boolean isBenutzerAnlegenMoeglich(Long mandantenNummer) {
    return true;
  }

  @Override
  public boolean isSperrenMoeglich(Long mandantenNummer) {
    return true;
  }

  @Override
  public boolean isBenutzernameKannGewechseltWerden(Long mandantenNummer) {
    return true;
  }
}
