package de.tud.kom.socom.web.server;
import de.tud.kom.socom.web.client.services.login.SoComLoginService;
import de.tud.kom.socom.web.client.sharedmodels.LoginResult;
import de.tud.kom.socom.web.server.database.login.HSQLLoginDatabaseAccess;
import de.tud.kom.socom.web.server.database.login.LoginDatabaseAccess;
import de.tud.kom.socom.web.server.sessions.SessionManager;
import de.tud.kom.socom.web.server.util.Hasher;
import de.tud.kom.socom.web.server.util.Logger;
import de.tud.kom.socom.web.server.util.LoggerFactory;
@SuppressWarnings("serial")
public class SoComLoginServiceImpl extends SoComService implements SoComLoginService {
public static final String SESSION_USER_ATTRIBUTE = "user";
private LoginDatabaseAccess logindb = HSQLLoginDatabaseAccess.getInstance();
private Logger logger = LoggerFactory.getLogger();
@Override
public LoginResult login(String username, String plainpassword) {
String sha = Hasher.getSHA(plainpassword); //FIXME receiving plain password?!
LoginResult userInformation = logindb.validateLogin(username, sha);
String sid = SessionManager.get().createSession(userInformation);
userInformation.setSid(sid);
logger.Info("Login user #" + userInformation.getUid() + ": " + userInformation.getUsername() + " (Using Web-Application)");
return userInformation;
}
@Override
public LoginResult isLoggedIn(String sid) {
return getCurrentUser(sid);
}
@Override
public boolean logout(String sid) {
LoginResult lr = SessionManager.get().getSession(sid);
SessionManager.get().removeSession(sid);
logger.Info("Logout user #" + lr.getUid() + ": " + lr.getUsername() + " (Using Web-Application)");
return true;
}
}