package com.kritsit.casetracker.server.domain.services;
import com.kritsit.casetracker.server.datalayer.IUserRepository;
import com.kritsit.casetracker.server.datalayer.RowToModelParseException;
import com.kritsit.casetracker.server.domain.model.AuthenticationException;
import com.kritsit.casetracker.shared.domain.model.Staff;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Login implements ILoginService {
private final Logger logger = LoggerFactory.getLogger(Login.class);
private IUserRepository repository;
public Login(IUserRepository repository) {
this.repository = repository;
}
public Staff login(String username, int passwordHash) throws RowToModelParseException, AuthenticationException {
logger.info("Logging in {}", username);
long passwordSaltedHash = repository.getPasswordSaltedHash(username);
long salt = repository.getSalt(username);
long testPasswordSaltedHash = salt + passwordHash;
boolean isAuthenticated = !(passwordSaltedHash == -1 || testPasswordSaltedHash != passwordSaltedHash);
if(!isAuthenticated) {
logger.debug("Log in failed");
throw new AuthenticationException();
}
return repository.getUserDetails(username);
}
}